[英]Multiple python installations and pip, dude, where is my site-packages?
众所周知,Mac OS 预装了自己的 python。
建议似乎是不要管它,并使用自制软件将新的 python 安装到系统中。
我的问题是,在使用自制软件安装 python(和 pip)后,pip 正在将软件包安装到 Mac OS 站点软件包中,而不是我自己的。 我已经确认我正在运行“自制”pip:
$ which pip
/usr/local/bin/pip
但是当我 pip 安装一些东西时,我可以将它安装在:
/lib/python2.7/site-packages
Pip 应该安装在/usr/local/lib/python2.7/site-packages
除非我想念一些东西。
令人惊讶的是,使用-V
检查会产生令人惊讶的结果:
pip -V
pip 7.1.0 from /usr/local/lib/python2.7/site-packages (python 2.7)
在运行pip install
后运行pip list
不会显示据称刚刚安装但转到错误站点包的包。
除此之外,我的 $PYTHONPATH 无法识别/lib/python2.7/site-packages
上安装的软件包,因此我无法使用它们。
为了增加更多的困惑,我决定使用 virtualenv,但令我惊讶的是,即使使用 pip 并激活 virtualenv 继续安装到/lib/python2.7/site-packages
而不是 virtualenv site-packages。
所以,不知何故,我最终得到了一个自制软件 pip,它安装了自制软件站点包之外的软件包和一个 python 解释器,它不能使用 pip 安装的软件包。
你如何推荐我 go 关于找到根本原因并拥有流畅的 python 体验? :)
我认为在你激活virtualenv之后你的python路径应该指向那个环境的站点 - 包位置 - 如果没有它可能没有被激活。 只有在您激活它之后,才会运行pip,以便将其安装在虚拟环境的站点包中。 如果它没有被激活,它将进入它已经知道的任何其他网站包:
virtualenv venv
source /venv/bin/activate
如果您在步骤2之前执行第3步,则实际上并未使用您创建的虚拟环境,因此所有投注均已关闭 - 这可能是pip仍在安装到旧位置的原因。
现在,我的总体建议是进一步使用pyenv
将特定版本的python安装到/Users/username/.pyenv folder
并放弃默认的OSX和自制软件包。 它很简单,你可以通过简单的命令发布来更改版本,轻松控制python的确切版本。
然后在python2或pyvenv
使用virtualenv,如果在python3中(不要与pyenv混淆)用自己的本地站点包构建虚拟环境来存储pip模块。 当您激活virtualenv时,$ PYTHONPATH将切换到特定位置。
那么流程将是:
完全控制您的环境!
首先,您可以尝试使用pip install --upgrade pip
命令更新pip,这可能会也可能不会重定向您的pip路径。
第二,我应该真正开始这个是在.bash_profile
或.zshrc
设置首选的pip可执行路径,如果你使用的话。 这样做(在Mac上)是按住Shift+Command+Period
来显示隐藏文件,转到User文件夹并使用文本编辑器打开.bash_profile/.zshrc
。 然后,将路径/添加到/ bin所需的点。 像export PATH="User/Username/anaconda3/bin:$PATH"
或/usr/local/bin
或path/to/venv/bin
。 无论你最后编写什么代码都会覆盖前一个代码。
三,如果你不想改变你的默认点,而是想为这个特定的情况使用不同的版本,只需要包含pip可执行文件的完整路径,如/usr/local/bin/pip list
或Users/Username/Desktop/venv/bin/pip install module
。
您可以通过调用此命令轻松找到您site-packages
目录
python -c 'import site; print(site.getsitepackages())'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.