Python Setuptools:安装具有重叠布局的软件包
我有两个具有公共层次结构的包。比如:Python Setuptools:安装具有重叠布局的软件包,python,setuptools,pylint,Python,Setuptools,Pylint,我有两个具有公共层次结构的包。比如: org.team.foo: org/ __init__.py team/ __init__.py foo/ __init__.py baz.py from setuptools import setup, find_packages setup(name='foopack', version='1.0', packages=find_pa
org.team.foo
:
org/
__init__.py
team/
__init__.py
foo/
__init__.py
baz.py
from setuptools import setup, find_packages
setup(name='foopack',
version='1.0',
packages=find_packages()
)
org.team.bar
:
org/
__init__.py
team/
__init__.py
bar/
__init__.py
qux.py
from setuptools import setup, find_packages
setup(name='barpack',
version='1.0',
packages=find_packages()
)
setup.py
如下所示:
org.team.foo
:
org/
__init__.py
team/
__init__.py
foo/
__init__.py
baz.py
from setuptools import setup, find_packages
setup(name='foopack',
version='1.0',
packages=find_packages()
)
org.team.bar
:
org/
__init__.py
team/
__init__.py
bar/
__init__.py
qux.py
from setuptools import setup, find_packages
setup(name='barpack',
version='1.0',
packages=find_packages()
)
我想将org.team.foo
和org.team.bar
作为不同的发行版分发。我知道推荐的方法是创建org
和team
命名空间目录。不幸的是,pylint
,这是我们持续集成工作流的一个重要部分,它不识别名称空间包。我想知道我是否可以单独分发这些文件,并将它们安装在彼此的顶部。我尝试了这个(sudo-pip-install-foopack&&sudo-pip-install-barpack
),它似乎在安装位置产生了以下结果:
/usr/local/lib/python2.7/dist-packages/
org/
__init__.py
team/
__init__.py
foo/
__init__.py
baz.py
bar/
__init__.py
quz.py
这似乎像预期的那样工作,除了如果我卸载foopack
,org/\uuuu init\uuuuuuuuuuuuuuy
和org/team/\uuuuuuuuuu init\uuuuuuuuuuuuuuy
也被卸载。这不是我在我的工作流程中所期望的,所以我同意这一点
这还有其他的缺点吗?是否有我没有考虑的问题,或者我应该考虑的一个备选方案? < P>安装两个具有公共层次结构的包的唯一方法是使用命名空间包。 如果您的CI服务器无法处理这些问题,则应在CI端进行修复,否则CI服务器将迫使您破坏产品(使用CI服务器可能不会产生预期的结果)