Python 3.5 安装pyvenv
Python 3.5 install pyvenv
我正在尝试为需要 python 3.5 的存储库获取虚拟环境。我正在使用 Debian,据我所知,python 3.5 没有 aptitude 包。看了一些帖子,推荐下载3.5的源码编译。
运行编译并安装后,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 而不是我的虚拟环境。
在 virtualenv 中 运行 正确版本的 pip 的最佳方法是什么?我能想到的两个选项是将二进制文件移动到 /usr/bin 或修改我的虚拟环境中的激活脚本以将 virtualenv 路径放在 /usr/local.
之后
尝试在本地安装:
pip install --user -r requirements.txt
我相信,这会将文件安装在您的 $HOME
目录的子目录中(我认为您的虚拟环境会设置)。否则我认为你可以使用:
/path/to/virtualenv/pip install -r requirements.txt
选项 1
您可以通过执行
在虚拟环境中手动升级pip
pip install -U pip
选项 2
在该包内升级 pip 的好方法
python -m ensurepip --upgrade
确实升级了系统中的pip版本(如果低于ensurepip中的版本)。
您遇到这个问题,因为 venv 使用 ensurepip 将 pip 添加到新环境中:
Unless the --without-pip option is given, ensurepip will be invoked to
bootstrap pip into the virtual environment.
Ensurepip 包不会从 Internet 下载或从其他任何地方抓取文件,因为所有必需的组件都已包含在包中。这样做会增加安全漏洞,因此不受支持。
Ensurepip 并非旨在为您提供最新的 pip,而只是 "a" pip。要获得最新版本,请使用本文开头的手动方式 post。
要检查 ensurepip 版本,您可以输入 python 控制台 import ensurepip print(ensurepip.version())
进一步阅读的更多发现:
- 使用文件手动升级 ensurepip - https://github.com/python/cpython/commit/f649e9c44631c07e707842c42747b651b986dcc4
- What's the proper way to install pip, virtualenv, and distribute for Python?
- Comprehensive beginner's virtualenv tutorial?
Kesh 的回答让我朝着正确的方向前进。
问题是我实际上并没有在我的 venv 中安装 pip。
事实证明,当我从源代码构建 python3.5 时,我没有 libssl-dev 包。看起来 ensurepip 的依赖项之一是 python ssl 包,它没有安装,因为我没有 libssl-dev。
为了解决这个问题,我为源代码重建了 python 3.5,并安装了 libssl-dev 包。重建的 python 现在包含 ssl 包,它允许 ensurepip 在我的虚拟环境中安装 pip。
我正在尝试为需要 python 3.5 的存储库获取虚拟环境。我正在使用 Debian,据我所知,python 3.5 没有 aptitude 包。看了一些帖子,推荐下载3.5的源码编译。
运行编译并安装后,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 而不是我的虚拟环境。
在 virtualenv 中 运行 正确版本的 pip 的最佳方法是什么?我能想到的两个选项是将二进制文件移动到 /usr/bin 或修改我的虚拟环境中的激活脚本以将 virtualenv 路径放在 /usr/local.
之后尝试在本地安装:
pip install --user -r requirements.txt
我相信,这会将文件安装在您的 $HOME
目录的子目录中(我认为您的虚拟环境会设置)。否则我认为你可以使用:
/path/to/virtualenv/pip install -r requirements.txt
选项 1 您可以通过执行
在虚拟环境中手动升级pippip install -U pip
选项 2
在该包内升级 pip 的好方法
python -m ensurepip --upgrade
确实升级了系统中的pip版本(如果低于ensurepip中的版本)。
您遇到这个问题,因为 venv 使用 ensurepip 将 pip 添加到新环境中:
Unless the --without-pip option is given, ensurepip will be invoked to bootstrap pip into the virtual environment.
Ensurepip 包不会从 Internet 下载或从其他任何地方抓取文件,因为所有必需的组件都已包含在包中。这样做会增加安全漏洞,因此不受支持。
Ensurepip 并非旨在为您提供最新的 pip,而只是 "a" pip。要获得最新版本,请使用本文开头的手动方式 post。
要检查 ensurepip 版本,您可以输入 python 控制台 import ensurepip print(ensurepip.version())
进一步阅读的更多发现:
- 使用文件手动升级 ensurepip - https://github.com/python/cpython/commit/f649e9c44631c07e707842c42747b651b986dcc4
- What's the proper way to install pip, virtualenv, and distribute for Python?
- Comprehensive beginner's virtualenv tutorial?
Kesh 的回答让我朝着正确的方向前进。
问题是我实际上并没有在我的 venv 中安装 pip。
事实证明,当我从源代码构建 python3.5 时,我没有 libssl-dev 包。看起来 ensurepip 的依赖项之一是 python ssl 包,它没有安装,因为我没有 libssl-dev。
为了解决这个问题,我为源代码重建了 python 3.5,并安装了 libssl-dev 包。重建的 python 现在包含 ssl 包,它允许 ensurepip 在我的虚拟环境中安装 pip。