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内から完全に機能する場合でも、実行可能ファイルはコマンドラインで見つかりません。
$ 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からのものがどこにあるかを見るには、これを試してください(rosdep
をtox
に置き換えてください)。
$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
デフォルトの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に感謝します)
--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
を使用します。
パッケージが消えるという考えを気にしない場合は、代わりにpython2
とpython3
を使用できます。
# 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"
Windowsでは、パス%USERPROFILE%\AppData\Roaming\Python\Scripts
をパスに追加する必要があります。
PyPIパッケージを作成し、正常にビルドして公開しましたが、インストール後に実行できなかったため、私はこの質問に出くわしました。 $PATH
variableが正しく設定されました。
私の場合、問題はentry_point
ファイルにsetup.py
を設定していないことでした。
entry_points = {'console_scripts':
['YOUR_CONSOLE_COMMAND=MODULE_NAME.FILE_NAME:FUNCTION_NAME'],},
Pythonのbin
ディレクトリを$PATH
変数に追加することに加えて、動作させるためにそのディレクトリの所有者も変更する必要がありました。なぜ私が既に所有者ではなかったのかは分かりません。
chown -R ~/Library/Python/