【问题标题】:How to handle python packages with conflicting names?如何处理名称冲突的python包?
【发布时间】:2015-02-16 09:16:19
【问题描述】:

我正在使用两个具有相同名称的 python 包。

是否有规范或 Python 的方式来处理安装两个名称冲突的软件包?到目前为止,我只是在开发/构建过程中偶尔需要其中一个包,所以我一直在使用单独的 virtualenv 来处理冲突,但这使得构建步骤更加复杂,我想知道是否没有更好的处理方式。

【问题讨论】:

  • Virtualenv 是最好的方法,我认为。

标签: python namespaces setuptools alembic


【解决方案1】:

您可以为 pip 使用 --target 选项并安装到备用位置:

pip install --target=/tmp/test/lib/python3.6/site-packages/alt_alembic alembic

然后,当您在 python 中导入时,像往常一样执行第一个操作,然后为 alt 从该命名空间执行导入,如下所示:

import alembic  # alembic.io version
from alt_alembic import alembic as alt_alembic  # pip version

然后,当您调用那个时,您可以调用 alt_alembic.function() 和不在 PyPi 中的那个,alembic.function() 当我使用虚拟环境时,我的目标路径有 /tmp/test。您需要将该路径替换为您的 python 安装的正确路径。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 使用相对导入将处理内部 modulesub-package 与其他顶级模块和包的冲突,但在以下情况下无济于事两个顶级包的名称相同。
    • 那么我们应该使用 virtualenv
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2021-08-14
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    相关资源
    最近更新 更多