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

时间:2015-11-20 18:28:48

标签: python macos python-2.7 pip homebrew

众所周知,Mac OS预装了自己的python。

建议似乎是单独留下并使用自制程序在系统中安装一个新的python。

我的问题是在使用自制软件安装python(和pip)后,pip正在将软件包安装到Mac OS站点软件包而不是我自己的软件包中。我已经确认我正在运行"自制软件" PIP:

$ which pip
/usr/local/bin/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 list后立即运行pip install并未显示应该由其安装的软件包,而是显示错误的站点软件包。

除此之外,我的$ PYTHONPATH无法识别/lib/python2.7/site-packages上安装的软件包,因此我无法使用它们。

为了增加更多的混淆,我决定使用virtualenv,但我很惊讶甚至使用pip,virtualenv active保持安装到/lib/python2.7/site-packages而不是virtualenv site-packages。

所以,不知怎的,我最终得到了一个自制的点子,它安装了自制网站包之外的包和一个不能使用pip安装的软件包的python解释器。

您如何推荐我找到根本原因并获得流畅的Python体验? :)

2 个答案:

答案 0 :(得分:0)

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

  • 第1步:创建虚拟环境
    • a la ... virtualenv venv
    • 只做一次!
  • 第2步:激活虚拟环境
    • 类似于source /venv/bin/activate
    • 的内容
    • 每次要使用此虚拟环境时都需要做
  • 步骤3:运行pip命令,观察它们是否已安装在虚拟环境网站包中!

如果您在步骤2之前执行第3步,则实际上并未使用您创建的虚拟环境,因此所有投注都已关闭 - 这可能是pip仍然安装到旧位置的原因。

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

那么在python2中使用virtualenv或pyvenv如果在python3中(不要与pyenv混淆)用自己的本地站点包构建虚拟环境来存储pip模块。当您激活virtualenv时,$ PYTHONPATH将切换到特定位置。

流程将是:

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

完全控制你的环境!

答案 1 :(得分:0)

例如,您可以尝试使用pip install --upgrade pip命令更新点子,该命令可能会也可能不会重定向您的点子路径。

二,我真的应该从这一开始,就是在.bash_profile.zshrc中设置首选的pip可执行文件路径(如果您正在使用的话)。您的操作方式(在Mac上)是通过按住Shift+Command+Period来显示隐藏的文件,转到“用户”文件夹,然后使用文本编辑器打开.bash_profile/.zshrc。然后,将路径/到/ bin添加到所需的点。类似于导出PATH="User/Username/anaconda3/bin:$PATH"/usr/local/binpath/to/venv/bin。最后编写的任何代码都将覆盖前一个代码。

三,如果您不想更改默认的pip,而是想针对特定情况使用其他版本,则只需包含pip可执行文件的完整路径即可,例如/usr/local/bin/pip listUsers/Username/Desktop/venv/bin/pip install module。 / p>