【问题标题】:Add a virtual namespace for a Python package为 Python 包添加虚拟命名空间
【发布时间】:2019-09-19 05:32:32
【问题描述】:

我有一个python包,目录结构如下:

my_package/
    my_subpackage/
        __init__.py
        my_module.py
    __init__.py
    setup.py

当我生成 Python 轮并 pip 安装它时,我不会拥有 my_package 命名空间,因此 my_subpackage 将成为我的 virtualenv 或其他任何名称的全局命名空间的一部分。

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

my_package/
    my_package/
        my_subpackage/
            __init__.py
            my_module.py
        __init__.py
    setup.py

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

【问题讨论】:

  • 可以在my_package下添加文件吗? my_package 是否应该包含除 my_subpackage 之外的任何其他内容?
  • setup.py 接受的元数据的完整列表可在official docs 中找到。看起来没有任何东西可以指定“虚拟”包名。

标签: python python-3.x setuptools python-wheel


【解决方案1】:

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

这样的事情应该可以工作:

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

不过,我从未使用过 package_dir 的相对路径,因此我们将不胜感激。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2010-09-13
    • 2011-03-06
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多