我在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”的软件包时

我可以运行:sudo pip install -U rosdep 安装没有错误,相应的文件位于/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

但是,如果我尝试运行:sudo rosdep init, 它给出了一个错误:“sudo: rosdep:命令未找到”

这不是特定于包的错误。对于在我的计算机上使用pip安装的任何包,我都会得到这个。我甚至试着加上

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

到我的$PATH。 但是在命令行中找不到可执行文件,即使包在python中完美地工作。


当前回答

macOS Monterey也有同样的问题。我必须修改.bash_profile文件并添加以下条目

export PATH="~/Library/Python/3.8/bin:$PATH"

macOS Monterey上的默认python版本是3.8,但你必须仔细检查你的python版本,以确保你使用的是正确的版本

其他回答

我偶然发现了这个问题,因为我创建、成功构建并发布了一个PyPI包,但在安装后无法执行它。$ path变量设置正确。

在我的例子中,问题是我没有在setup.py文件中设置entry_point:

entry_points = {'console_scripts':

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

macOS Monterey也有同样的问题。我必须修改.bash_profile文件并添加以下条目

export PATH="~/Library/Python/3.8/bin:$PATH"

macOS Monterey上的默认python版本是3.8,但你必须仔细检查你的python版本,以确保你使用的是正确的版本

除了将python的bin目录添加到$PATH变量中,我还必须更改该目录的所有者,以使其工作。不知道为什么我还不是老板。

chown -R ~/Library/Python/

如果你使用——user进行安装(例如pip3.6 install——user tmuxp),可以使用site模块从Python本身获取特定平台的用户安装目录。例如,在macOS上:

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

通过添加/bin,我们现在有了安装包可执行文件的路径。我们可以根据输出动态地在shell的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"

当你使用MacOS安装程序(从Python网站下载)安装Python或Python3时,它会在你的~/中添加一个导出器。配置脚本。你要做的就是找到它的来源。重新启动所有终端也可以达到目的。

警告——我认为最好在Python3中使用pip3 -为了将来的好处。

如果你已经安装了Python3,以下步骤在macOS Mojave上对我有效:

首先使用sudo - sudo - h pip3 Install ansible安装ansible 创建一个指向Python bin路径的符号链接

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

把它钉在。profile上

导出路径= $路径:/图书馆/框架/ Python.framework / current_python_bin

执行source ~/。配置并重新启动所有终端外壳。 键入ansible——version