为Python包添加虚拟命名空间

为Python包添加虚拟命名空间,python,python-3.x,setuptools,python-wheel,Python,Python 3.x,Setuptools,Python Wheel,我有一个具有以下目录结构的python包: my_package/ my_subpackage/ __init__.py my_module.py __init__.py setup.py 当我生成PythonWheel并安装它时,我不会使用my_包名称空间,因此my_子包将成为myvirtualenv或任何东西的全局名称空间的一部分 我知道这里的解决方案是创建另一个名为my_package的目录,并将所有内容放入其中: my_packa

我有一个具有以下目录结构的python包:

my_package/
    my_subpackage/
        __init__.py
        my_module.py
    __init__.py
    setup.py
当我生成PythonWheel并安装它时,我不会使用
my_包
名称空间,因此
my_子包
将成为my
virtualenv
或任何东西的全局名称空间的一部分

我知道这里的解决方案是创建另一个名为
my_package
的目录,并将所有内容放入其中:

my_package/
    my_package/
        my_subpackage/
            __init__.py
            my_module.py
        __init__.py
    setup.py
但是假设由于某种原因,我无法更改目录结构。有没有办法在第一个布局中在
setup.py
中添加虚拟
my_包
命名空间?

您可以在
setup.py
中指定该选项

像这样的方法应该会奏效:

setup(
    ...
    package_dir={'': '..'},
    packages=['my_package']
    ...
)

不过,我从未将相对路径用于
package\u dir
,因此请您确认。

您能在我的包下添加文件吗?除了我的_子包之外,我的_包还应该包含其他内容吗?可以在中找到
setup.py
接受的元数据的完整列表。看起来没有任何东西可以指定“虚拟”包名。