【发布时间】: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.py或README将存在于 Python 包之外。看看packaging.python.org/en/latest/distributing.html -
我已经发布了一个答案,其中包含基于您的 cmets 使用的工作解决方案。感谢你们! :)
标签: python setuptools