在OSX上使用系统Python的Pip
我通过macports安装了python26,所以我系统上正确的python路径是 /opt/local/bin/python
但是,当我执行
sudo pip install <packagename>
时,它给我的结果是
sudo pip install <somepackage>
Exception:
Traceback (most recent call last):
File "/Library/Python/2.6/site-packages/pip-1.0.1-py2.6.egg/pip/basecommand.py", line 126, in main
self.run(options, args)
File "/Library/Python/2.6/site-packages/pip-1.0.1-py2.6.egg/pip/commands/install.py", line 215, in run
import setuptools
ImportError: No module named setuptools
Storing complete log in /Users/navin/.pip/pip.log
所以,我怀疑它在使用系统自带的python。我已经按照网站的说明安装了distribute(里面包含setuptools)。我也通过安装程序安装了pip。我想我不小心把系统python的setuptools搞坏了,所以现在才会出现这个问题 :(
我该怎么做才能让pip再次正常工作呢?
5 个回答
这是我在使用macports时,让pip正常工作的设置,并把py26-pip设为默认的pip。
sudo port install py26-pip && sudo port select --set pip py26-pip
安装完成后,可以运行这个命令来查看pip的帮助信息。
pip --help
之后,你可能需要更新你的路径,以便包含pip安装的bin文件。可以编辑.bash_profile文件,加入类似下面的内容。
export PATH=/opt/local/bin:/opt/local/sbin:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin:$PATH
更新: 我强烈建议通过从源代码构建来安装 CPython(示例),然后创建虚拟环境来进行开发。
总结一下,使用 Macports 安装 pip
的过程如下:
sudo port install py39-pip
这会安装一个名为 py39-pip
的 MacPorts 端口。
但是,并没有安装 /opt/local/bin/pip
,而且 port select pip
或 port select py27-pip
都会失败(与 port select python
不同)。不建议在其他发行版的 bin
目录中进行更改。
需要注意的是,以下路径中的 Python 文件:
/usr/bin
是 macOS 预装的 Python/usr/local/bin
是由 MacPython 安装的,可以从 python.org 获取/opt/local/bin
是由 MacPorts 安装的。
实际的可执行文件可以通过对每个上述 bin
目录中的各种与 Python 相关的符号链接使用 ls -ls
命令找到。
为了确保系统优先调用 MacPorts 安装的 Python,需要将 /opt/local/bin
放在 运行环境的 PATH
中,位置要在 /usr/bin
和 /usr/local/bin
之前。这可以在 ~/.bash_profile
或 ~/.bashrc
文件中完成(具体使用哪个文件取决于你的系统和配置)。例如,在 ~/.bashrc
文件的最后写入
export PATH=/opt/local/bin:$PATH
将会产生这个效果(假设你使用的 shell 会读取 ~/.bashrc
文件)。
在路径正确设置后,系统仍然无法在 Macports 的 bin
目录中找到 pip
命令,因为它被安装为 /opt/local/bin/pip3.9
。文件 /opt/local/bin/pip
不会自动创建。
因此,系统会继续在 PATH
中查找,如果例如 MacPython 在某个后面的位置被添加到路径中并且安装了 pip
,那么那个 pip
就会被找到。
可以通过上面提到的命令来避免这种情况:
sudo ln -s /opt/local/bin/pip3.9 /opt/local/bin/pip
要从 /usr/local/bin 删除 pip,可以使用命令 sudo rm /usr/local/bin/pip
。
如果你是通过 macports 安装的 pip,输入 which pip
后应该会显示 /opt/local/bin/pip
。如果没有显示这个路径,可以按照 这里的说明重新安装 pip。只要 which python
显示的是 /opt/local
的安装路径,应该就没问题。如果不行,你可能需要修改一下你的 PATH
环境变量。