pipはパッケージを正常にインストールしますが、コマンドラインから実行可能ファイルが見つかりません


108

Mac OS X Yosemite、バージョン10.10.3に取り組んでいます。

http://johnlaudun.org/20150512-installing-and-setting-pip-with-macports/のようにmacportを使用してpython2.7とpipをインストールしました

パッケージを正常にインストールして、Python環境とPythonスクリプト内にインポートできます。ただし、ターミナルのコマンドラインから呼び出すことができるパッケージに関連付けられている実行可能ファイルは見つかりません。

誰が何が悪いのか知っていますか?(詳細は以下)

たとえば、http: //wiki.ros.org/jade/Installation/Sourceで指示されている「rosdep」というパッケージをインストールするとき

私は実行できます:sudo pip install -U rosdep エラーなしでインストールされ、対応するファイルは次の場所にあります/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

ただし、:を実行しようとするsudo rosdep initと、エラーが発生します。"sudo: rosdep: command not found"

これはパッケージ固有のエラーではありません。私のコンピューターにpipを使用してインストールされたすべてのパッケージでこれを取得します。私も追加してみました

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

私に$PATH。ただし、パッケージはpython内から完全に機能しますが、実行可能ファイルはコマンドラインにはありません。


関与するvirtualenv?
JL Peyret 2016年

いいえ、virtualenvは関係しません。
Sanket_Diwale 2016年

sudoを実行するときは、rootユーザーの$ PATHに切り替えます。PATHではなく、彼のPATHが更新されていることを確認してください
Anthony Perot

回答:


47

$ PATHを確認してください

tox コマンドラインモードがあります:

audrey:tests jluc$ pip list | grep tox
tox (2.3.1)

それはどこにある?

(編集:2.7内容はそれほど重要ではありません3.x、サブイン、ピップの動作はほとんど同じです)

audrey:tests jluc$ which tox
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/tox

そして私の$ PATHには何がありますか?

audrey:tests jluc$ echo $PATH
/opt/chefdk/bin:/opt/chefdk/embedded/bin:/opt/local/bin:..../opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin...

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/binに注意してください。それが私のpipインストール済みのものを見つけることを可能にするものです

さて、Pythonのどこにあるのかを確認するには、これを試してください(の代わりrosdeptox)。

$python
>>> import tox
>>> tox.__file__

それは出力します:

'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tox/__init__.pyc'

さて、上記の直上のディレクトリにcdしてくださいlib。あなたが見るかのbinディレクトリを?あなたはrosdepその箱の中に見えますか?もしそうなら、binあなたの$ PATHに追加してみてください。

audrey:2.7 jluc$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7
audrey:2.7 jluc$ ls -1

出力:

Headers
Python
Resources
bin
include
lib
man
share

答えてくれてJLに感謝しますが、これは主に私の問題です。私のサンプルアプリrosdepの場合、私が行ったように実行すると、取得される出力は次のようになります。grep rosdep rosdep(0.11.4)rosdep(出力なし)、コマンドラインは何も返さない
Sanket_Diwale

1
これは戻っていないrosdep、あなたの問題と一致しています。私のポイントは、rosdepがインストールされている場所と$ PATHがどのように見えるかを見つける必要があるということです。
JL Peyret 2016年

おかげで、バイナリも/opt/local/Library/Frameworks/Python.framework/Versions/2.7/binにインストールされました。それをPATHに追加し、現在は機能しています。おかげで、出力を提供できなかったため、バイナリを見つけるのに苦労していました。
Sanket_Diwale 2016年

export PATH = / opt / local / Library / Frameworks / Python.framework / Versions / 2.7 / bin:$ PATHがパスにありませんでした。OSXで私のためにトリックを実行しました
Caio Iglesias

1
でプログラムが見つからない場合which(まだパスに含まれていない場合)、mlocatelinuxまたはmdfindmacOS を使用してバイナリを検索することもできます。
jackcogdill

53

デフォルトのPythonがインストールされているmacOSでは/Users/<you>/Library/Python/2.7/bin/、$ PATH に追加する必要があります。

これを.bash_profileに追加してください:

export PATH="/Users/<you>/Library/Python/2.7/bin:$PATH"

これは、pipが実行可能ファイルをインストールする場所です。

ヒント:デフォルト以外のpythonバージョンの場合which pythonは、pythonインストールの場所を見つけて、上記のパスのその部分を置き換えます。(ヒントSanket_Diwaleをありがとう)


8
pipがインストールされる場所は、pythonのインストール方法によって異なります。MacOSには、macports、homebrew、システムデフォルトなど、pythonをインストールする複数の方法があります。使用されているpythonのバージョンに応じて、pipの場所は異なります。pipとpythonがどこにあるかを理解する簡単な方法は、ターミナルで「which python」を使用して、適切な場所を$ PATHに追加することです。
Sanket_Diwale 2017

macOS 10.14.3の場合、python.orgからPython 3.6をインストールすると、which python3最終的に(リンクを介して)につながりました/Library/Frameworks/Python.framework/Versions/3.6/bin/
フェニックス

42

--user(例pip3.6 install --user tmuxp)を使用してインストールする場合siteモジュールを使用してPython自体からプラットフォーム固有のユーザーインストールディレクトリを取得できます。たとえば、macOSの場合:

$ python2.7 -m site --user-base
/Users/alexp/Library/Python/2.7

これに追加/binすることで、パッケージの実行可能ファイルがインストールされるパスができました。出力に基づいてシェルのrcファイルに動的にPATHを設定できます。私はbashを使用していますが、運が良ければこれは移植可能です。

# Add Python bin directories to path
python3.6 -m site &> /dev/null && PATH="$PATH:`python3.6 -m site --user-base`/bin"
python2.7 -m site &> /dev/null && PATH="$PATH:`python2.7 -m site --user-base`/bin"

正確なPythonバージョンを使用して、Pythonがマイナーバージョン、たとえば3.5から3.6にアップグレードするときに実行可能ファイルが「消える」可能性を減らします。上記のように、ユーザーインストールパスにPythonバージョンが含まれている可能性があるため、これらは表示されなくなります。したがって、python33.5または3.6を指す可能性がありますが、python3.6常に3.6を指します。これ以上のパッケージをインストールするときは注意pip3.6してくださいpip3

パッケージが表示されなくなることを気にしない場合はpython2python3代わりに以下を使用できます。

# Add Python bin directories to path
# Note: When Python is upgraded, packages may need to be re-installed
#       or Python versions managed.
python3 -m site &> /dev/null && PATH="$PATH:`python3 -m site --user-base`/bin"
python2 -m site &> /dev/null && PATH="$PATH:`python2 -m site --user-base`/bin"

21

macOSについて質問されることは承知していますが、これはGoogle経由でここに到着したLinuxユーザー向けのソリューションです。

この質問で説明されている問題があり、pip経由でpdfxパッケージをインストールしました

私がそれを実行したとき、しかし、何も...

pip list | grep pdfx
pdfx (1.3.0)

まだ:

which pdfx
pdfx not found

Linuxでの問題は、pip install ...スクリプトがドロップされることで~/.local/binあり、これはデフォルトのDebian / Ubuntuにはありません$PATH

GitHubの問題を詳しく説明します:https : //github.com/pypa/pip/issues/3813

修正するには、たとえばにを追加~/.local/binします$PATH。たとえば、次の行を.bashrcファイルに追加します。

export PATH="$HOME/.local/bin:$PATH"

その後、シェルを再起動すると、期待どおりに動作するはずです。


2
シェルを再起動する代わりにsource ~/.bashrc.bashrc構成をリロードできます
Whiteclaws

1
すごい。「toxコマンドが見つかりません」と表示されていました。PATHを更新した後、動作します
GabrielBB


3

解決

以下のために、他の回答に基づいて、linuxそしてmacあなたが次のことを実行できます。

echo "export PATH=\"`python3 -m site --user-base`/bin:$PATH\"" >> ~/.bashrc
source ~/.bashrc

代わりにpython3:あなたは、Pythonのバージョンへの他のリンクを使用することができpythonpython2.7python3.6python3.9、など

説明

ユーザーパッケージが現在のOS(win、mac、linux)のどこにインストールされているかを知るために、次のコマンドを実行します。

python3 -m site --user-base

スクリプトbin/は、パッケージがインストールされているフォルダーに移動することがわかっています。

したがって、パスを連結します。

echo `python3 -m site --user-base`/bin

次に、それを環境変数にエクスポートします。

export PATH=\"`python3 -m site --user-base`/bin:$PATH\""

最後に、エクスポートコマンドの繰り返しを回避するために、それを.bashrcファイルに追加しsourceて実行し、新しい変更を実行して、冒頭で述べた解決策を提案します。


これは私にとってはうまくいき、理由はわかりません
ベンジャミン

@Benjamintsが説明を追加しました。
Willemoes

どうもありがとうございました!:)
ベンジャミント

2

PyPIパッケージを作成、ビルド、公開しましたが、インストール後にそれを実行できなかったため、この質問に遭遇しました。$PATH変数が正しく設定されました。

私の場合は問題は、私が設定されていなかったことだったentry_pointsetup.pyファイル:

entry_points = {'console_scripts':

['YOUR_CONSOLE_COMMAND=MODULE_NAME.FILE_NAME:FUNCTION_NAME'],},

2

pythonのbinディレクトリを$PATH変数に追加することに加えて、それを機能させるために、そのディレクトリの所有者を変更する必要もありました。なぜ私がまだ所有者ではなかったのかわかりません。

chown -R ~/Library/Python/

0

MacOSインストーラー(Pythonウェブサイトからダウンロード)を使用してPythonまたはPython3をインストールするexportと、~/.profileスクリプトにerが追加されます。あなたがする必要があるのはsourceそれだけです。すべての端末を再起動することでもうまくいくはずです。

警告-今後のメリットのために、Python3でpip3を使用することをお勧めします。

すでにPython3がインストールされている場合、macOS Mojaveで次の手順を実行できます。

  1. 最初にansibleをインストールするsudo-sudo -H pip3 install ansible

  2. あなたはPythonのbinパスへのシンボリックリンクを作成します

sudo ln -s /Library/Frameworks/Python.framework/Versions/Current/bin /Library/Frameworks/Python.framework/current_python_bin

そしてそれをホチキス止めする .profile

export PATH=$PATH:/Library/Frameworks/Python.framework/current_python_bin

  1. source ~/.profileすべての端末シェルを実行して再起動します。

  2. タイプ ansible --version

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.