【问题标题】:How to add submodules in a Python Library?如何在 Python 库中添加子模块?
【发布时间】:2021-08-15 18:08:53
【问题描述】:

我创建了一个 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 是什么样的?也许你忘了加find_packages
  • 您能说说它的作用吗?
  • @AlexanderL.Hayes 我在 setup.py 中添加了内容。请立即检查。

标签: python python-3.x python-module pypi python-packaging


【解决方案1】:

你能分享一下setup.py__init__.py的代码吗?

我看到了两种处理方法:

  • 使来自lib/submodule 的内容在顶层可用:在lib/__init__.py 添加from submodule import *,然后在__all__ 添加每个导入的名称。据我所知,在__init__.pys 内部,这在任何地方都是不好的做法

  • 将子模块目录添加到setup.py的packages参数:packages=["lib", "lib.submodule"]

编辑:正如我所料,packages parameter, 中缺少submodule,因此认为不需要。

注释的find_packages 选项与将lib.submodule 添加到包列表中的效果相同,它主要用于大型库中,手动添加每个模块会很痛苦。

【讨论】:

  • 我在同一个问题中更新了 setup.py 格式。请检查一下。您还问哪个 init.py ?外部或内部 init.py
  • lib.__init__.py 是外层的,顶层的。另外,我编辑了我的答案
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 2018-06-07
  • 2021-06-26
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
相关资源
最近更新 更多