当前位置: 首页 > 面试题库 >

强制python使用较旧版本的模块(比我现在安装的版本)

公冶弘壮
2023-03-14
问题内容

我的雇主有一个专用模块1,我们用于内部单元/系统测试;但是,该模块的作者不再在这里工作,并且要求我使用它来测试某些设备。

问题在于,pyfoo该版本需要twisted(v8.2.0)的较旧版本,并且需要导入twisted33个不同的文件中。我试过pyfoo在v11.0.0下运行单元测试,甚至看不到TCP
SYN数据包2。不幸的是,我已经在我的实验室linux服务器上安装了Twisted
v11.0.0
,并且我有依赖于它的代码。

我一直在为解决这个问题而绞尽脑汁,但是我只能提出以下选择:

选项A
。安装新版本的python,安装virtualenv,然后twisted在下方安装旧版本virtualenv。仅pyfoo在此新版本的python下运行要求的测试。

选项B 。使用以下命令编辑所有33个文件:DIR = '../'; sys.path.insert(0, DIR)在源代码下面的相应目录中安装python的旧版本。

选项C 。尝试修复pyfoo以使用v11.0.0 3

我有什么选择吗?除了上述选项A之外,还有没有更优雅的方法来解决此问题?

结束语:

  1. pyfoo为了争辩而称呼它
  2. 单元测试连接到我们的本地实验室服务器之一,并练习基本的telnet功能
  3. 这个选项几乎是一个入门者…… pyfoo这并非微不足道,而且我的工作期限很短。

问题答案:

选项B的更好版本将是替换

import twisted

通过

import pkg_resources
pkg_resources.require("Twisted==8.2.0")
import twisted

只要安装了Twisted,它将安排导入正确版本的twisted,否则会引发异常。这是一种更便携的解决方案。

但是,如果pkg_resources.require在调用被调用之前引入了扭曲,则这将行不通(选项B的任何其他变量也不会)。twisted将已经在sys.modules

OP Edit
:根据文档进行次要语法更正pkg_resources



 类似资料:
  • 问题内容: 在Ubuntu 10.04上,默认情况下安装了Python 2.6,然后我安装了Python 2.7。如何使用安装Python 2.7的软件包。 例如: 默认情况下会为Python 2.6安装BeautifulSoup 当我做: 在Python 2.6中可以使用,但是在Python 2.7中可以显示: 问题答案: 对要安装新软件包的Python实例使用已安装的版本。 在许多发行版中,可

  • 问题内容: Cloundfoundry最近将其Java buildpack更新到2.5版(包括Java 8和tomcat 8)。我仍想使用2.4版,因为我的应用尚未升级到Java 8。这样做最简单的方法是什么? 我可以使用 但是如何指定使用版本2.4(https://github.com/cloudfoundry/java- buildpack/releases/tag/v2.4 )?显然,指定标

  • 问题内容: 我想写一个样功能,比较两个版本号,并返回,或根据自己的比较valuses。 如果版本A早于版本B,则返回 返回如果版本A和B是等价的 如果版本A比版本B更新,则返回 每个小节都应解释为一个数字,因此1.10> 1.1。 所需的功能输出为 这是我的实现,有待改进: 我正在使用Python 2.4.5 btw。(安装在我的工作地点…)。 这是您可以使用的小型“测试套件” 问题答案: 删除字

  • 问题内容: 我正在处理的代码可以在Windows XP和Mac OS X上完美运行。在CentOS(以及Fedora和Ubuntu)上进行测试时,它无法正常工作。搜索网使我得出结论,那就是引起问题的那一版本。因此,现在我需要Zend Lucene 的版本才能正常工作。 我已经下载libiconv的,并配置它,,然后没有任何错误。似乎已成功安装,因为执行说版本是。虽然简单仍然给出了版本。 然后,我使

  • 问题内容: 这听起来像是一个愚蠢的问题,因为的目的恰恰是这样:在虚拟环境中安装某个特定版本的软件包(在本例中为Django)。但这正是我想要做的,我无法弄清楚。 我在Windows XP上,并且成功创建了虚拟环境,并且能够运行它,但是我应该如何在其中安装我想要的Django版本呢?我的意思是,我知道要使用新创建的脚本,但是如何安装Django 1.0.7?如果我这样做,它将安装最新版本。我尝试以各

  • 问题内容: 我正在走一个包含鸡蛋的目录,将这些鸡蛋添加到sys.path。如果目录中有相同.egg的两个版本,我只想添加最新的一个。 我有一个正则表达式·可以从文件名中提取名称和版本。问题是比较版本号,它是一个类似的字符串2.3.1。 由于我在比较字符串,所以2在10之上排序,但这对于版本是不正确的。 我可以进行一些拆分,解析,转换为int等操作,最终得到解决方法。但这是Python,而不是Jav