我正在尝试获得一个需要python3.5的回购虚拟环境。我正在使用Debian,据我所知,python 3.5没有智能包。在阅读了一些帖子后,建议下载3.5源代码并编译它。
运行make和install之后,python3.5被安装到/usr/local/bin。我将它添加到$PATH变量中。
这里是我遇到问题的地方。我跑完之后:
$ cd project-dir
$ pyvenv env
$ source env/bin/activate
$ pip install -r requirements.txt我在需要sudo来安装适当的软件包时遇到了问题。我跑了:
$ which pip事实证明,pip仍然在使用/usr/local/bin版本的pip。
$ echo $PATH返回
/home/me/project-dir/env/bin:/usr/local/bin:/usr/bin:/bin: ...我假设,因为/usr/local路径是在我的path变量中的虚拟环境的路径之后出现的,所以它使用的是pip版本,而不是我的虚拟环境。
在虚拟环境中运行正确版本的pip的最佳方法是什么?我可以想到的两个选项是将二进制文件移到/usr/bin或修改虚拟env中的激活脚本,将虚拟路径放在/usr/local之后。
发布于 2016-06-16 00:37:52
凯什的回答把我引向了正确的方向。
问题是我实际上没有在我的静脉中安装pip。
原来,当我从源代码构建python3.5时,我没有libssl包。其中一个依赖项似乎是python包,它没有安装,因为我没有libssl-dev。
为了解决这个问题,我为源代码重新构建了python3.5,并安装了libssl包。重新构建的python现在包括ssl包,它允许接续pip在我的虚拟环境中安装pip。
发布于 2016-06-15 04:36:16
选项1您可以在虚拟环境中通过执行
pip install -U pip选项2在该包中升级pip的好方法python -m ensurepip --upgrade确实升级了系统中的pip版本(如果它比系统中的版本低)。
您正面临这个问题,因为venv使用接续将pip添加到新的环境中:
除非
Ensurepip包不会从互联网下载,也不会从其他地方抓取文件,因为所有必需的组件都已经包含在包中了。这样做会增加安全缺陷,因此不受支持。
Ensurepip的设计并不是为了给你最新的点子,而只是“一个”点子。要想得到最新的一篇文章,请在这篇文章的开头使用手动的方式。
要检查以下版本,您可以键入python import ensurepip print(ensurepip.version())
进一步阅读的更多发现:
发布于 2016-06-15 04:06:49
尝试在本地安装它:
pip install --user -r requirements.txt我相信,它会将文件安装在$HOME目录的子目录中(我认为虚拟env会设置该子目录)。否则我想你可以用:
/path/to/virtualenv/pip install -r requirements.txthttps://stackoverflow.com/questions/37825910
复制相似问题