【问题标题】:Python imports wrong version of library outside of virtualenvPython 在 vi​​rtualenv 之外导入错误版本的库
【发布时间】:2015-07-28 06:08:06
【问题描述】:

需要帮助更新 python 包。

我有一个需要以下导入的实现

from twisted.internet.ssl import optionsForClientTLS

“optionsForClientTLS”已添加到版本 14(?) 的扭曲框架中。我认为 non-virtualenv 导入正在获得一个过时的版本——如果该导入是在一个通过 pip 扭曲安装的 virtualenv 中,那么一切都很好。在 virtualenv 之外导入失败。

在虚拟环境中

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 安装后,我仍然会得到旧版本。

Possibly related.

【问题讨论】:

    标签: python virtualenv twisted


    【解决方案1】:

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

    假设有两个 python 包是正确的(我认为。)我怀疑 PYTHONPATH 中路径的顺序意味着首先导入了错误的版本,而 pip 安装在稍后的版本中小路。

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

    【讨论】:

    • 为什么要在基本系统上安装不同版本的 Twisted?这就是 virtualenv 的用途;在 virtualenv 中安装你想要的版本,然后从 virtualenv 运行它。
    • 我需要通过 pypi 分发生成的包,并且要求 virtualenv 确保一切正常是不够的。
    • 您是说您想要一个持续集成系统来进行系统安装吗?在这种情况下,您可能希望使用 Docker 之类的东西进行隔离。你是否对 distutils 做了一些不寻常的事情,它在系统安装和 virtualenv 上的行为会有所不同?
    • 不,我只是想确保我们的包的 pip install (通常)在 virtualenv 之外工作。就我而言,我试图删除或升级现有版本,以便可以使用 v15。它是一个 CLI 工具。虽然它不是一个巨大的负担,但如果用户不必为了可用性而使用 virtualenv,我会喜欢它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多