如何在 Python 库中添加子模块?
How to add submodules in a Python Library?
我创建了一个 python 库,其结构如下所示。
|/library_name
| |__init__.py
| |/subpackage
| | |__init__.py
| | |
|setup.py
|setup.cfg
|LICENSE
现在在pypi中发布时,我看不到随之安装的内部子包。我应该怎么办?外 __init__.py
应该是什么。假设内部 __init__.py
有我写的 类 。有人请帮助如何将子包添加到 python 库。
这是 setup.py 格式
setup(
name = 'package',
packages = ['package'],
version = '1.0.1',
license='GNU General Public Version 3',
description = 'Package is the open source Python Library for solving various AI needs',
long_description = long_description,
long_description_content_type = "text/markdown",
author = ['Vigneshwar K R'],
author_email = 'mymail@gmail.com',
url = 'https://github.com/ToastCoder/repo',
download_url = 'https://github.com/ToastCoder/repo/archive/master.zip',
keywords = ['ARTIFICIAL INTELLIGENCE', 'TENSORFLOW'],
install_requires=['tensorflow'],
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Intended Audience :: Science/Research',
'Intended Audience :: Education',
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9'
],
)
能否分享 setup.py
和 __init__.py
代码?
我看到了两种处理方法:
使来自 lib/submodule
的内容在顶层可用:在 lib/__init__.py
中添加 from submodule import *
,然后在 __all__
中添加每个导入的名称。据我所知,这在任何地方都是不好的做法,但在 __init__.py
s
内部
将子模块目录添加到 setup.py 的 packages
参数中:packages=["lib", "lib.submodule"]
编辑:如我所料,packages
parameter, 中缺少 submodule
,因此认为不需要。
评论的find_packages
选项与将lib.submodule
添加到包列表的效果相同,它主要用于大型库,手动添加每个模块都会很痛苦。
我创建了一个 python 库,其结构如下所示。
|/library_name
| |__init__.py
| |/subpackage
| | |__init__.py
| | |
|setup.py
|setup.cfg
|LICENSE
现在在pypi中发布时,我看不到随之安装的内部子包。我应该怎么办?外 __init__.py
应该是什么。假设内部 __init__.py
有我写的 类 。有人请帮助如何将子包添加到 python 库。
这是 setup.py 格式
setup(
name = 'package',
packages = ['package'],
version = '1.0.1',
license='GNU General Public Version 3',
description = 'Package is the open source Python Library for solving various AI needs',
long_description = long_description,
long_description_content_type = "text/markdown",
author = ['Vigneshwar K R'],
author_email = 'mymail@gmail.com',
url = 'https://github.com/ToastCoder/repo',
download_url = 'https://github.com/ToastCoder/repo/archive/master.zip',
keywords = ['ARTIFICIAL INTELLIGENCE', 'TENSORFLOW'],
install_requires=['tensorflow'],
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Intended Audience :: Science/Research',
'Intended Audience :: Education',
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9'
],
)
能否分享 setup.py
和 __init__.py
代码?
我看到了两种处理方法:
使来自
内部lib/submodule
的内容在顶层可用:在lib/__init__.py
中添加from submodule import *
,然后在__all__
中添加每个导入的名称。据我所知,这在任何地方都是不好的做法,但在__init__.py
s将子模块目录添加到 setup.py 的
packages
参数中:packages=["lib", "lib.submodule"]
编辑:如我所料,packages
parameter, 中缺少 submodule
,因此认为不需要。
评论的find_packages
选项与将lib.submodule
添加到包列表的效果相同,它主要用于大型库,手动添加每个模块都会很痛苦。