[英]Python: Distributing a file/module into another package with setuptools
通常,我试图分发一个模块/文件,使其成为另一个python程序包的一部分,该程序包已经在site-packages下设置了目录结构。
对于site-packages下的给定结构:
-- main_package
-- __init__.py
-- sub_package
-- __init__.py
-- bar.py
我有一个模块foo.py
,我想存在旁边的模块bar.py
,都包下sub_package
。 如果仅按照典型软件包的方式在存储库中设置结构,则setuptools的__init__.py
需要main_package
和sub_package
的现有__init__.py
文件。 理想情况下,这可能是可以从我们自己的pypi分发的wheel或sdist。
我尝试使用py_module
,但无法将其放置在站点包下顶层以外的任何其他位置。
具体来说,我正在尝试将saltstack external_pillar分配到已经由salt设置的salt / pillar /结构中。 有多个盐实例可能需要也可能不需要external_pillar,因此仅将支柱捆绑到我们拥有的盐分布中是不可行的。
您可能正在寻找名称空间包 。
在您的情况下,具有如下结构:
`-- main_package
| # no __init__.py here
`-- sub_package
|-- __init__.py
`-- foo.py
Python 3.3从PEP 420添加了隐式名称空间包。创建本机名称空间包所需
__init__.py
只是从名称空间包目录中省略__init__.py
。...
极为重要的是,每个使用名称空间包的发行版都将忽略
__init__.py
或使用pkgutil样式的__init__.py
。 如果没有分发,它将导致名称空间逻辑失败,并且其他子包将不可导入。...
最后,每个发行版都必须在setup.py中为
setup()
提供namespace_packages
参数。
但是,从您的问题中,我不确定sub_package
是否已经存在main_package
。
如果是这样,我不确定在不隐藏其模块的情况下用于扩展sub_package
的结构,您可能需要使用备用子包名称来实现此目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.