【问题标题】:python implicit namespace packages are not installing with setuptoolspython 隐式命名空间包未使用 setuptools 安装
【发布时间】:2015-01-18 18:39:27
【问题描述】:

使用 Python 3.4 和 Setuptools,我试图让命名空间包按照 PEP 420 中的定义正常工作。我的目录结构如下所示:

  • 项目
    • __init__.py
    • 核心
      • 几个 .py 文件
    • 日志记录
      • com1
        • 几个 .py 文件
      • com2
        • 几个 .py 文件
    • 界面
      • 杂项文件

使用 setuptools find_package() 函数时,它会找到“项目”包,但不会安装“项目”内的任何文件夹(隐式子包)。当我解压 .egg 文件时,我看到的只是里面的 __init__.py 文件,没有任何子目录或文件。

我可以在每个目录中放一个 __init__.py,但由于这些文件都是空的,而且我不喜欢它使结构工作的方式,我试图避免这种情况。

如果我移到我的“项目”目录之外,并运行以下命令,它可以工作

python -m project.logging.com1.myfile

但在其他任何地方它都不起作用,因为 setuptools 没有安装其中没有 __init__.py 的子目录(隐式命名空间)。

如何让 setuptools 正确安装我的隐式命名空间包?我只需要告诉它在目录中安装所有文件就足够了吗?

【问题讨论】:

    标签: python python-3.x namespaces setuptools python-3.4


    【解决方案1】:

    似乎将 PEP 420 支持添加到 setuptools 的初始拉取请求是 rejected。在another issue 上有关于合并 PEP 420 支持的最佳方式的公开讨论,但目前似乎不支持隐式命名空间。

    【讨论】:

    • 提供的链接已损坏
    【解决方案2】:

    find_packages 不支持隐式命名空间包。然而,find_packages 所做的只是返回一个dotted.package.names 的列表。你仍然可以明确列出你的包。

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2018-04-27
      • 2015-02-27
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      相关资源
      最近更新 更多