众所周知,macos在出厂时预装了python。在
我们的建议似乎是不去管它,而是使用自制程序在系统中安装一个新的python。在
我的问题是,在使用自制程序安装python(和pip)之后,pip正在将包安装到macos站点包中,而不是我自己的。我已确认我正在运行“自制”pip:
$ which pip
/usr/local/bin/pip
但当我安装一些东西时,我可以看到它安装在:
^{pr2}$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
不会显示本应是由它安装但转到错误站点包的包。在
除此之外,/lib/python2.7/site-packages
上安装的包无法被我的$PYTHONPATH识别,因此我无法使用它们。在
为了增加更多的困惑,我决定使用virtualenv,但是我很惊讶,即使在virtualenv活动的情况下使用pip,也一直安装到/lib/python2.7/site-packages
而不是virtualenv站点包。在
所以,不知怎么的,我得到了一个自制的pip,它安装了自制站点包之外的包,还有一个python解释器不能使用pip安装的包。在
您建议我如何找到根本原因并获得流畅的python体验?:)
我认为在激活virtualenv之后,python路径应该指向环境站点包的位置,如果不是的话,它可能没有被激活。只有当你激活它后,你才会运行pip,这样它才能安装在虚拟env的站点包中。如果它没有激活,它将进入它已经知道的任何其他站点包中:
virtualenv venv
source /venv/bin/activate
如果您在步骤2之前执行第3步,那么您实际上没有使用您创建的虚拟环境,因此所有赌注都已取消,这可能是pip仍在安装到旧位置的原因。在
现在,我的总体建议是进一步使用
pyenv
将特定版本的python安装到/Users/username/.pyenv folder
中,并放弃默认的OSX和自制软件包。它很简单,通过简单地发出命令来更改版本,您可以轻松地控制要使用的python的确切版本。在然后在python2中使用virtualenv,或者在python3中使用
pyvenv
if(不要与pyenv混淆)来构建虚拟环境,使用它们自己的本地站点包来存储pip模块。激活virtualenv时,$PYTHONPATH将切换到特定位置。在然后流程将是:
完全控制你的环境!在
首先,可以尝试使用
pip install upgrade pip
命令更新pip,这可能会重定向pip路径,也可能不会重定向pip路径。在第二个,我应该从这个开始,在}中设置首选的pip可执行路径(如果您使用的话)。方法是按住}或
.bash_profile
或{Shift+Command+Period
显示隐藏的文件,进入用户文件夹,用文本编辑器打开.bash_profile/.zshrc
。然后,添加路径/to/bin,其中您需要的pip是。例如导出PATH="User/Username/anaconda3/bin:$PATH"
或{path/to/venv/bin
。不管你最后写什么代码都会覆盖上一个。在第三,如果您不想更改默认的pip,而是想为特定情况使用不同的版本,只需包含pip可执行文件的完整路径,比如}。在
/usr/local/bin/pip list
或{相关问题 更多 >
编程相关推荐