我的雇主有一个专门的模块1,用于内部单元/系统测试;但是,这个模块的作者不再在这里工作,我被要求用它测试一些设备。
问题是pyfoo
需要twisted
的旧版本(v8.2.0),它在33个不同的文件中导入twisted
。我试着在v11.0.0下运行pyfoo
的单元测试,但我甚至看不到TCP SYN包2。不幸的是,我已经在我的实验室linux服务器上安装了twisted v11.0.0,而且我有自己的代码依赖于它。
要解决这个问题,我只有提出以下几个方案:
- 选项A*.安装新版本的python,安装
virtualenv
,然后在virtualenv
下安装旧版本的twisted
。在这个新版本的python下,只运行需要pyfoo
的测试。 - 选项B*。使用以下命令编辑所有33个文件:
DIR = '../'; sys.path.insert(0, DIR)
并在源代码下的相应目录中安装旧版本的python。 - 选项C*.尝试修复
pyfoo
以使用v11.0.03
我是否遗漏了任何选项?除了上面的选项A之外,还有更好的方法来解决这个问题吗?
尾注:
1.为了便于讨论,我们将其命名为pyfoo
1.单元测试连接到我们的一个本地实验室服务器,并练习基本的telnet功能
1.这个选项几乎是不可能的... pyfoo
并不是微不足道的,我对这项工作的最后期限很短。
5条答案
按热度按时间vom3gejh1#
选项B的更好版本。将取代
字符串
按
型
只要安装了twisted,它就会安排导入正确的twisted版本,否则会引发异常。这是一个更便携的解决方案。
但是,如果twisted在
pkg_resources.require
被调用之前被导入,这将不起作用(选项B的任何其他变量也是如此);twisted
将已经在sys.modules
中pkg_resources
文档进行轻微语法校正ggazkfy82#
如果SingleNegationElimination的解决方案不起作用,请注意您不需要替换导入的所有33个示例;只需要在入口处修改
sys.path
;例如,您可以只针对模块的__init__.py
文件。在这里你可以插入例如。
字符串
j2datikz3#
我花了一点时间尝试和错误来解决我的情况;其中包括接受的答案和它的附加注解(提到添加
__requires__
):字符串
hwamh0ep4#
我不能告诉你在你的情况下什么是最好的,但你可以考虑:
选项D:在虚拟机中运行它(例如。Windows 7)
选项E:在另一台机器上安装旧版本的python/twisted
owfi6suc5#
您应该在导入之前进行卸载和安装。
首先
字符串
然后,
型