繁体   English   中英

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

[英]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,以便将其安装在虚拟环境的站点包中。 如果它没有被激活,它将进入它已经知道的任何其他网站包:

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

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

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

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

那么流程将是:

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

完全控制您的环境!

首先,您可以尝试使用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/binpath/to/venv/bin 无论你最后编写什么代码都会覆盖前一个代码。

三,如果你不想改变你的默认点,而是想为这个特定的情况使用不同的版本,只需要包含pip可执行文件的完整路径,如/usr/local/bin/pip listUsers/Username/Desktop/venv/bin/pip install module

您可以通过调用此命令轻松找到您site-packages目录

python -c 'import site; print(site.getsitepackages())'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM