【问题标题】:installing virtualenvwrapper causes untested argparse to be installed安装 virtualenvwrapper 会导致安装未经测试的 argparse
【发布时间】:2015-08-21 22:48:10
【问题描述】:
我已经将virtualenvwrapper 安装在一个名为setupenv 的3.5.0b1 virtualenv 中,以便能够轻松生成新的python 3.5 测试环境。
查看已安装软件包的列表,我确实看到安装了 argparse 版本 1.3.0。这个(最新)版本的argparsehas not been tested with 3.5。
这很危险吗?
据我所知,3.2+ 带有自己的argparse。这个安装会破坏其他依赖argparse 的软件包吗?为什么要安装这个?
【问题讨论】:
标签:
argparse
virtualenvwrapper
python-3.5
【解决方案1】:
这可能并不危险。如果你运行:
python3.5 -c "import argparse; print(argparse.__file__)"
,您可以看到与解释器一起安装的arparse.py 优先于多余安装的argparse 包。
稍加挖掘(或使用pipdeptree 包)将告诉您stevedore 依赖于argparse。这只是草率的编程(或无视可能的带宽问题)。
在包的 setup.py 中,您可以轻松测试您是否正在运行 python argparse。
我只会从您的 setupenv virtualenv (pip uninstall argparse -y) 中卸载 argparse,根据我的经验,virtualenvwrapper 不会受到删除的影响。
这实际上是stevedore 中的一个错误,它使用pbr 包并支持使用environment markers 指定python 版本
但是stevedore 没有使用它。具有讽刺意味的是,pbr 中的示例 是 与 argparse,通过在 requirements.txt 中指定:
argparse; python=='2.6'
针对stevedore 的bug report 已提交,但尽管修复很简单,但并未在多个版本中实施。最后的问题是
设置为不会修复,可能是因为放弃对 2.6 的支持删除了
完全需要 argparse。