在 virtualenv 之外,Python 导入了错误的库版本

3
需要更新 Python 包时需要帮助。
我有一个实现需要以下导入:
from twisted.internet.ssl import optionsForClientTLS

"

“optionsForClientTLS”在Twisted框架14版本中被添加。我认为非虚拟环境导入的版本已经过时了——如果该导入在通过pip安装了Twisted的虚拟环境中,那么一切都很好。在虚拟环境外部导入失败。

在虚拟环境中

"
twistd --version

显示 15.2.1 版本。在裸系统上,它显示 13.2.0 版本。

pip install twisted
....
pip freeze

展示
Twisted==15.2.1

使用pip卸载并重新安装twisted没有帮助。您可以通过apt-get安装twisted。

sudo apt-get install python-twisted

我安装了较旧的版本,但在卸载后只使用pip安装仍然得到旧版本。

可能相关。

1个回答

0

我用一种可怕的方式解决了这个问题。这是几天前的事情,所以路径可能不完全正确。

我认为关于存在两个Python包的假设是正确的。我怀疑PYTHONPATH中路径的顺序导致错误的版本被首先导入,而pip则安装在路径后面的版本中。

我的“解决方案”是将最新版本的twisted目录复制到旧版本中。这是从usr/local/lib/python...usr/lib/python...或从... site-packages... dist-packages。如果有人遇到同样的问题并无法解决它,我可以再次检查。


为什么要在基础系统上安装不同版本的Twisted?这就是virtualenv的作用;在virtualenv中安装您想要的版本,然后从virtualenv运行它。 - Glyph
我需要通过pypi分发生成的软件包,仅仅要求virtualenv确保一切正常是不够的。 - Damouse
你是说你想要一个持续集成系统来进行系统安装?在这种情况下,您可能需要使用像Docker这样的隔离工具。您是否在distutils中执行一些不寻常的操作,以便它在系统安装与虚拟环境上的行为不同? - Glyph
不,我只是想确保我们的软件包(通常)在虚拟环境之外正常工作。在我的情况下,我试图删除或升级现有版本,以便我可以使用v15。这是一个CLI工具。虽然它不是一个巨大的负担,但为了可用性,我希望用户不必使用虚拟环境。 - Damouse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接