【问题标题】:How to make python setuptools find top level modules如何让 python setuptools 找到顶级模块
【发布时间】:2015-02-19 21:16:51
【问题描述】:

我有一个包,其结构(简化)如下:

mypackage/
    __init__.py
    setup.py
    module1.py
    module2.py
    mysubpackage/
        __init__.py
        mysubmodule1.py
        mysubmodule2.py

我正在使用这样的 setup.py 配置:

from setuptools import setup, find_packages

setup(
    name = "mypackage",
    version = "0.1",
    author = "Foo",
    author_email = "foo@gmail.com",
    description = ("My description"),
    packages=find_packages(),
)

find_packages() 的默认 where 参数是 '.',但它不包括我的顶级模块(module1.py 和 module2.py)。但是,运行python setup.py build时会添加所有子子模块和子包。

如何在不将 setup.py 上移一级的情况下也添加顶级 Python 模块?

【问题讨论】:

  • 你为什么不想移动setup.py?它应该在包外
  • 公平地说,setup.py 应该上移一级,所有其他脚本/包/模块都需要通过正确配置setup.py 来安装。应该是这样的。
  • mypackage 实际上是一个 django 应用程序,我希望在应用程序中包含 setup.py 以将其与应用程序的源代码一起提交,并避免将其包含在我的 django 项目中.
  • setup.py 应该始终位于比 Python 包更高的目录级别。您的应用程序的“源”应该是 Python 包本身,加上任何支持文件,如 setup.pyREADME 将存在于 Python 包之外。看看packaging.python.org/en/latest/distributing.html
  • 我已经发布了一个答案,其中包含基于您的 cmets 使用的工作解决方案。感谢你们! :)

标签: python setuptools


【解决方案1】:

感谢大家的回复。

最后,我添加了一个包含 mypackage 和 setup.py 模块的目录(不是 Python 包)。现在的结构如下所示:

myapp/
    setup.py
    mypackage/
        __init__.py
        module1.py
        module2.py
        mysubpackage/
            __init__.py
            mysubmodule1.py
            mysubmodule2.py

现在使用find_packages() 可以正常工作。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2016-02-29
    • 2022-01-26
    • 2015-06-09
    • 1970-01-01
    相关资源
    最近更新 更多