【问题标题】:Multiple python installations and pip, dude, where is my site-packages?多个 python 安装和 pip,老兄,我的站点包在哪里?
【发布时间】:2016-02-23 08:23:39
【问题描述】:

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

建议似乎不要管它,使用自制软件将新的 python 安装到系统中。

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

$ which pip
/usr/local/bin/pip

但是当我 pip install 时,我可以看到它安装在:

/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,但令我惊讶的是,即使在 virtualenv 处于活动状态的情况下使用 pip 仍然安装到 /lib/python2.7/site-packages 而不是 virtualenv 站点包。

所以,不知何故,我最终得到了一个自制 pip,它在自制站点包之外安装软件包,以及一个无法使用 pip 安装的软件包的 python 解释器。

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

【问题讨论】:

  • . venv/bin/activate你的 vitualenv 了吗?
  • 为标题投票

标签: python macos python-2.7 pip homebrew


【解决方案1】:

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

  • 第 1 步:创建虚拟环境
    • 一个拉... virtualenv venv
    • 只做一次!
  • 第 2 步:激活虚拟环境
    • 类似source /venv/bin/activate
    • 每次你想使用这个虚拟环境时都需要做
  • 第 3 步:运行 pip 命令,观察它们安装到虚拟环境站点包中!

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

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

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

然后流程将是:

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

完全控制您的环境!

【讨论】:

    【解决方案2】:

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

    两个,我应该真正从这个开始是在.bash_profile.zshrc 中设置首选的pip 可执行路径,如果你正在使用一个。您执行此操作的方式(在 Mac 上)是按住 Shift+Command+Period 以显示隐藏文件,转到用户文件夹并使用文本编辑器打开 .bash_profile/.zshrc。之后,在您需要的 pip 所在的位置添加 path/to/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

    【讨论】:

      猜你喜欢
      • 2015-07-10
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2016-04-25
      相关资源
      最近更新 更多