安装virtualenvwrapper会导致安装未经测试的argparse

时间:2015-06-07 10:59:10

标签: argparse virtualenvwrapper python-3.5

我已经在名为virtualenvwrapper的3.5.0b1 virtualenv中安装了setupenv,以便能够轻松生成新的python 3.5测试环境。

查看已安装软件包的列表,我确实看到安装了argparse版本1.3.0。这个({1}} has not been tested with 3.5的最新版本。

这是危险的吗?

据我所知,3.2+带有自己的argparse。这个安装可能会破坏依赖argparse的其他软件包吗?为什么要安装这个?

1 个答案:

答案 0 :(得分:2)

这可能并不危险。如果您运行:

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

我只是从你的argparse virtualenv(setupenv)中卸载pip uninstall argparse -y,virtualenvwrapper不受我的经验中删除的影响。

这实际上是stevedore中的一个错误,它使用pbr包并支持使用environment markers指定python版本 但是stevedore没有使用它。具有讽刺意味的是,pbr

中指定的argparse 的示例requirements.txt相符合

argparse; python=='2.6'   

stevedore针对import java.util.Scanner; public class Homework { public Scanner s; public String wordToTest; public void HomeWork() { s = new Scanner(System.in); wordToTest = s.next(); Check(wordToTest); } public static void Check(String testWord) { String aWord = "palinder"; if (aWord.equals(testWord)) { System.out.println("The word "+testWord+" is a palinder"); } else { System.out.println("The word "+testWord+" isn't a palinder"); } } } 提交了bug report,但虽然此修复程序很简单,但并未针对多个版本实施。最后问题是 设置为不会修复,可能是因为支持2.6删除了 完全需要argparse。

相关问题