有没有办法创建一个源分发包括。没有 __init__.py 的子包?
Is there a way to create a source distribution incl. subpackages without __init__.py?
是否可以使用 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
的问题:上述程序是否会被视为 good/modern 实践?
问候
而不是 find_packages
,您需要 find_namespace_packages
(以前称为 find_packages_ns
)。
需要安装工具的最新版本;该功能是在 version 40.1.0 中添加的,于 2018 年 8 月发布。
您还需要注意不要包含不打算作为包的目录,但是您已经拥有的 where='src'
应该会处理这个问题。
是否可以使用 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
的问题:上述程序是否会被视为 good/modern 实践?
问候
而不是 find_packages
,您需要 find_namespace_packages
(以前称为 find_packages_ns
)。
需要安装工具的最新版本;该功能是在 version 40.1.0 中添加的,于 2018 年 8 月发布。
您还需要注意不要包含不打算作为包的目录,但是您已经拥有的 where='src'
应该会处理这个问题。