我创建了一个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
的内部 -
将子模块目录添加到setup.py的
packages
参数:packages=["lib", "lib.submodule"]
edit:正如我所料,packages
参数中缺少submodule
,因此不认为需要它。
评论的find_packages
选项与将lib.submodule
添加到包列表中的效果相同,它主要用于手动添加每个模块会很痛苦的大型库。