栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么“ python3 -m venv myenv”将比我在系统上任何位置都能找到的任何版本的pip都更旧的pip版本安装到myenv中?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么“ python3 -m venv myenv”将比我在系统上任何位置都能找到的任何版本的pip都更旧的pip版本安装到myenv中?

我在运行

OSX 10.10.2
和时遇到相同的问题
python 3.4.2
。最近,我在具有虚拟
debianwheezy
机的计算机上创建了一个虚拟环境,
python 3.4.3
并最终获得了
pip
比可用的旧版本。必须升级
pip

我已经升级

pip
在虚拟环境中,以
6.1.1
6.0.8
手动,因为我强迫症有关的软件库版本的方式-是的,我在我的升级
python3
版本
3.4.3
现在。无论如何,我的系统
python3-pip
是最新版本
6.1.1
,所以我也想知道为什么
pyvenv
创建一个新的虚拟环境并用old加载它
pip

我没有注意到由于升级而导致的任何虚拟环境中发生的任何不良情况

pip
,(但另一方面,我也没有注意到任何良好的情况)显然,新的pip更快-
没注意到,并且输出更少成功安装失败的原因是用户不在乎-
也没有注意到,可能是因为我是不在乎的用户之一,并且还配备了能够拿铁的先进咖啡机开机!!!-仍在等待
sudo pip install latte
完成:(

因此,要回答您的问题,绝对有可能,并且建议升级,因为显然新

pip
补丁修复了一些错误并且运行得更快,但是我想速度并不是那么重要,并且这些错误修复不会影响到所有问题。这么多的人(我从来没有遇到过使用旧版本的错误
pip
)。

可以 使用该标志–system-site-packages中链接到系统站点包,当你创建一个新的虚拟环境中,这样的

pyvenv myenv --system-site-packages

这将链接到您的系统范围的pip版本,并消除了在每个虚拟环境上手动升级pip的烦恼,但是如果您这样做,那么您的虚拟环境是否就是所有虚拟的?

更新:按照上面的要求,我进入了

venv
软件包的源代码进行挖掘。
pip
是通过
_setup_pip
文件
__init__.py
中第248行中调用的方法设置的

def _setup_pip(self, context):        """Installs or upgrades pip in a virtual environment"""        # We run ensurepip in isolated mode to avoid side effects from        # environment vars, the current directory and anything else        # intended for the global Python environment        cmd = [context.env_exe, '-Im', 'ensurepip', '--upgrade',        '--default-pip']        subprocess.check_output(cmd, stderr=subprocess.STDOUT)

因此,venv似乎正在

ensurepip
使用该
subprocess
模块从Shell进行调用。

再过一分钟的google-
fu给我提供了来自surepip的文档。

surepip.version()

返回一个字符串,该字符串指定在引导环境时将安装的pip捆绑版本。

因此,从命令行输入以下代码:

$ python3 -c 'import ensurepip; print(ensurepip.version())' 6.0.8

显示

pip
将用引导的当前电流
ensurepip

我猜我们在

pip
每次
ensurepip
升级之前都只能使用旧版本的,直到升级为止,因为我找不到升级附带的pip版本的方法
ensurepip



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516830.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号