web-dev-qa-db-ja.com

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

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内から完全に機能する場合でも、実行可能ファイルはコマンドラインで見つかりません。

70
Sanket_Diwale

$ PATHを確認してください

toxにはコマンドラインモードがあります。

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

それはどこにある?

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?それは私のピップがインストールされたものを見つけることができるものです

さて、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
31
JL Peyret

デフォルトの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に感謝します)

35
joh-mue

--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バージョンが含まれている可能性があるため、これらは消えます。したがって、python3は3.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"
27
Alex Palmer

Windowsでは、パス%USERPROFILE%\AppData\Roaming\Python\Scriptsをパスに追加する必要があります。

2
Jared Beach

PyPIパッケージを作成し、正常にビルドして公開しましたが、インストール後に実行できなかったため、私はこの質問に出くわしました。 $PATHvariableが正しく設定されました。

私の場合、問題はentry_pointファイルにsetup.pyを設定していないことでした。

entry_points = {'console_scripts':

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

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

chown -R ~/Library/Python/
0
d4Rk