Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理名称冲突的python包?_Python_Namespaces_Setuptools_Alembic - Fatal编程技术网

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

如何处理名称冲突的python包?,python,namespaces,setuptools,alembic,Python,Namespaces,Setuptools,Alembic,我正在使用两个同名的python包 是否有一种规范的或python的方法来处理安装两个名称冲突的软件包?到目前为止,我只是偶尔在开发/构建过程中需要一个包,所以我一直在使用一个单独的virtualenv来处理冲突,但它使构建步骤更加复杂,我想知道是否有更好的方法来处理它。绝对导入和相对导入如何。 您可以为pip使用--target选项,并将其安装到其他位置: pip install --target=/tmp/test/lib/python3.6/site-packages/alt_al

我正在使用两个同名的python包


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

绝对导入和相对导入如何。

您可以为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安装的正确路径

我认为Virtualenv是最好的方法。使用相对导入可以处理内部模块或子包与其他顶级模块和包的冲突,但如果两个顶级包的名称相同,则不会有帮助。那么我们应该使用Virtualenv