如何处理名称冲突的python包?

Bre*_*bel 16 python namespaces setuptools alembic

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

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

Mic*_*son 5

您可以将--target选项用于pip并安装到其他位置:

pip install --target=/tmp/test/lib/python3.6/site-packages/alt_alembic alembic
Run Code Online (Sandbox Code Playgroud)

然后,当您导入python时,请像往常一样执行第一个操作,对于alt,请从该名称空间进行导入,如下所示:

import alembic  # alembic.io version
from alt_alembic import alembic as alt_alembic  # pip version
Run Code Online (Sandbox Code Playgroud)

然后,当您调用该对象时,可以调用alt_alembic.function(),也可以调用不在PyPi中的那个,alembic.function()我的目标路径具有/ tmp / test,就像我使用虚拟环境时一样。您需要用适合您的python安装的正确路径替换该路径。