我在 3.5.0b1 virtualenv 中安装了 virtualenvwrapper
,名为 setupenv
,以便能够轻松生成新的 python 3.5 测试环境。
查看已安装软件包的列表,我确实看到安装了 argparse 版本 1.3.0。此(最新)版本的 argparse has not been tested with 3.5 .
这危险吗?
据我所知,3.2+ 带有自己的 argparse
。此安装是否会破坏依赖 argparse 的其他软件包?为什么要安装这个?
最佳答案
这可能并不危险。如果你运行:
python3.5 -c "import argparse; print(argparse.__file__)"
,您可以看到随解释器安装的arparse.py
优先于多余安装的argparse
包。
稍微挖掘一下(或使用 pipdeptree 包)就会告诉你 stevedore
依赖于argparse。这只是草率的编程(或忽视可能的带宽问题)。
在包的 setup.py
中,您可以轻松测试您是否正在运行 python < 2.7 或 3.0 <= python < 3.2,并且仅在这些情况下安装 argparse
。
我只是从您的 setupenv
virtualenv 中卸载 argparse
(pip uninstall argparse -y
),virtualenvwrapper 不受删除的影响根据我的经验。
这实际上是stevedore
中的一个错误,它使用pbr
包并且支持使用environment markers的python版本规范。
但装卸 worker 并没有使用它。具有讽刺意味的是,pbr
中的示例使用 argparse
,通过在 requirements.txt
中指定:
argparse; python=='2.6'
一个bug report针对stevedore
已提交,但尽管修复很简单,但并未在多个版本中实现。最后的问题是
设置为无法修复,可能是因为放弃了对 2.6 的支持删除了
完全需要 argparse。
关于argparse - 安装 virtualenvwrapper 会导致安装未经测试的 argparse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30692722/