pip installs packages successfully, but executables not found from command line
我正在使用Mac OS X Yosemite版本10.10.3。
我按照以下步骤使用macport安装了python2.7和pip
http://johnlaudun.org/20150512-installing-and-setting-pip-with-macports/
我可以成功安装软件包并将其导入我的python环境和python脚本中。但是,找不到与可以从终端中的命令行调用的软件包关联的任何可执行文件。
有人知道可能出什么问题吗? (下面有更多详细信息)
例如,按照http://wiki.ros.org/jade/Installation/Source
中的说明安装名为" rosdep"的软件包时
我可以运行:
会正确安装并且相应文件位于
中
但是,如果我尝试运行:
它给出一个错误:
这不是程序包特定的错误。对于在计算机上使用pip安装的所有软件包,我都会得到它。我什至尝试添加
1 | /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages |
到我的
但是,即使软件包在python内完美运行,也无法在命令行上找到可执行文件。
在具有默认python安装的macOS上,您需要将
将此添加到您的.bash_profile:
1 | export PATH="/Users/<you>/Library/Python/2.7/bin:$PATH" |
这是pip安装可执行文件的地方。
<提示>提示:对于非默认的python版本
检查您的$ PATH
1 2 | audrey:tests jluc$ pip list | grep tox tox (2.3.1) |
在哪里?
(编辑:
1 2 | audrey:tests jluc$ which tox /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/tox |
我的$ PATH中有什么?
1 2 | 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的来源,请尝试执行此操作(用
1 2 3 | $python >>> import tox >>> tox.__file__ |
打印出的
:
1 | '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tox/__init__.pyc' |
现在,将cd转到上面
1 2 | audrey:2.7 jluc$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7 audrey:2.7 jluc$ ls -1 |
输出:
1 2 3 4 5 6 7 8 | Headers Python Resources bin include lib man share |
如果使用
1 2 | $ python2.7 -m site --user-base /Users/alexp/Library/Python/2.7 |
通过添加
1 2 3 | # 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版本。因此,尽管
如果您不介意软件包消失的想法,可以使用
1 2 3 4 5 | # 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" |
我知道这个问题是关于macOS的,但是这是通过Google到达Linux的Linux用户的解决方案。
我遇到了此问题中描述的问题,通过pip安装了pdfx软件包。
但是当我运行它时,什么都没有...
1 2 | pip list | grep pdfx pdfx (1.3.0) |
但是:
1 2 | which pdfx pdfx not found |
Linux上的问题是
这是一个有关GitHub的问题,其详细信息如下:https://github.com/pypa/pip/issues/3813
要解决此问题,只需将
1 | export PATH="$HOME/.local/bin:$PATH" |
在那之后,重新启动您的外壳,一切应该按预期进行。
解决方案
基于其他答案,对于
1 2 | echo"export PATH="`python3 -m site --user-base`/bin:$PATH"">> ~/.bashrc source ~/.bashrc |
代替
解释
为了知道用户软件包在当前操作系统(win,mac,linux)中的安装位置,我们运行:
1 | python3 -m site --user-base |
我们知道脚本会转到安装软件包的
因此我们将路径连接起来:
1 | echo `python3 -m site --user-base`/bin |
然后将其导出到环境变量。
1 | export PATH="`python3 -m site --user-base`/bin:$PATH" |
最后,为了避免重复导出命令,我们将其添加到我们的
我偶然发现了这个问题,因为我创建,成功构建并发布了一个PyPI软件包,但是在安装后无法执行。
在我的情况下,问题是我没有在
1 2 3 | entry_points = {'console_scripts': ['YOUR_CONSOLE_COMMAND=MODULE_NAME.FILE_NAME:FUNCTION_NAME'],}, |
在Windows上,您需要将路径
oaming\\Python\\Scripts
在Windows上,这对我有帮助
https://packaging.python.org/tutorials/installing-packages
在Windows上,您可以通过运行python -m site --user-site并用脚本替换site-packages来找到用户基本二进制目录。例如,这可能返回C:\\\\ Users \\\\ Username \\\\ AppData \\
oaming \\\\ Python36 \\\\ site-packages,因此您需要将PATH设置为包括C:\\\\ Users \\\\ Username \\\\ AppData \\
oaming \\\\ Python36 \\\\ Scripts。您可以在控制面板中永久设置用户PATH。您可能需要注销才能使PATH更改生效。
当您使用MacOS安装程序(从Python网站下载)安装Python或Python3时-将
警告-我相信最好将pip3与Python3配合使用-以获取未来的收益。
如果您已经安装了Python3,则以下步骤可在macOS Mojave上为我工作:
首先使用
安装ansible
您创建到Python
并将其装订到
运行
类型
除了将python的
1 | chown -R ~/Library/Python/ |