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服务器可能不会产生预期的结果)