多个python安装和pip,伙计,我的网站包在哪里?

2024-05-21 04:40:03 发布

您现在位置:Python中文网/ 问答频道 /正文

众所周知,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体验?:)


Tags: pip程序whichvirtualenv站点libpackagesusr
2条回答

我认为在激活virtualenv之后,python路径应该指向环境站点包的位置,如果不是的话,它可能没有被激活。只有当你激活它后,你才会运行pip,这样它才能安装在虚拟env的站点包中。如果它没有激活,它将进入它已经知道的任何其他站点包中:

  • 步骤1:创建虚拟环境
    • 一个拉。。。virtualenv venv
    • 只做一次!在
  • 第二步:激活vital env
    • source /venv/bin/activate
    • 每次使用此虚拟环境时都需要执行此操作
  • 第三步:运行pip命令,看着它们安装在虚拟env站点包中!在

如果您在步骤2之前执行第3步,那么您实际上没有使用您创建的虚拟环境,因此所有赌注都已取消,这可能是pip仍在安装到旧位置的原因。在

现在,我的总体建议是进一步使用pyenv将特定版本的python安装到/Users/username/.pyenv folder中,并放弃默认的OSX和自制软件包。它很简单,通过简单地发出命令来更改版本,您可以轻松地控制要使用的python的确切版本。在

然后在python2中使用virtualenv,或者在python3中使用pyvenvif(不要与pyenv混淆)来构建虚拟环境,使用它们自己的本地站点包来存储pip模块。激活virtualenv时,$PYTHONPATH将切换到特定位置。在

然后流程将是:

  • 使用pyenv下拉并切换到要使用的python的特定版本,以覆盖homebrew和OSX版本。在
  • 创建你的vitrualenv。这将创建一个bin,它将链接到您在上一步中指定的pyenv python堆栈。在
  • 激活虚拟环境,然后继续。在

完全控制你的环境!在

首先,可以尝试使用pip install upgrade pip命令更新pip,这可能会重定向pip路径,也可能不会重定向pip路径。在

第二个,我应该从这个开始,在.bash_profile或{}中设置首选的pip可执行路径(如果您使用的话)。方法是按住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或{}。在

相关问题 更多 >