【发布时间】:2018-09-19 15:11:44
【问题描述】:
是否可以使用python setup.py sdist 创建源代码分发,而不必在每个(子)包(python 3.5+)中使用某种__init__.py 文件?我真的很想使用命名空间包来避免任何冗余和开销。应包含所有子包中所有嵌套的.py-文件。
所以采用以下项目结构(我试图类似于pytest documentation):
setup.py:
from setuptools import setup, find_packages
setup(
version="0.0.1",
name="py_import_test",
package_dir={"": "src"},
packages=find_packages(where='src')
)
在main.py 我使用类似
import py_import_test.p1.helloworld
# do something with helloworld-module
当我使用上述项目结构python setup.py sdist 时,我在生成的 .tar.gz 中根本没有得到任何源文件。只有在py_import_test、p1 和可能的其他子包下存在__init__.py 时,它才有效。
总而言之,我的目标是拥有一些独立的应用程序包,我可以使用它来测试并轻松地将我的包安装到远程服务器上。为此,我希望源代码树尽可能精简并使用最新的 python 打包模式。
除了我关于__init__.py 的问题:上述程序是否被认为是一种好的/现代实践?
问候
【问题讨论】:
-
只需将
__init__.py文件放入目录中,它们就会神奇地变成包。别担心,他们不会字节!
标签: python python-3.x setuptools