繁体   English   中英

Python package 未安装子模块

[英]Python package not installing submodules

我在 dev 分支中创建了一个具有以下结构的 package(在我验证 package 安装正确之前不合并到 main):

mypackage
|
|-- __init__.py
|-- setup.py
|-- requirements.txt
|-- module.py
|-- subpackage_one
    |
    |-- __init__.py
    |-- module_ab.py
        |-- class_aba
        |-- class_abb
    |-- module_ac.py
        |-- function_aca

|-- subpackage_two
    |
    |-- __init__.py
    |-- module_ba.py
        |-- function_baa

附加信息:

  • root 和subpackage__two中的__init__.py文件都是空的
  • subpackage_one中的__init__.py文件包含一些额外的初始化,形式为from mypackage.subpackage_one.module_xx import class_xxx (或function_xxx
  • 我正在通过pip install git+https://github.com/organization/repo.git@dev package
  • 如果我在 package 的根目录下,我可以按预期导入子模块
  • setup.py 文件是:
import setuptools

with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()

setuptools.setup(
    name='mypackage',
    version='0.0.2',
    author='author1, author2',
    author_email='author1_email, author2_email',
    description='My Package',
    long_description=long_description,
    long_description_content_type="text/markdown",
    url='https://github.com/organization/repo',
    packages=['mypackage'],
    install_requires=['requests'],
)
  • 当我运行以下代码段时:
import pkgutil
for i in pkgutil.iter_modules(mypackage.__path__):
    print(i)

我懂了:

ModuleInfo(module_finder=FileFinder('/path/to/package/mypackage'), name='module', ispkg=False)

事实上,子包不在 mypackage 文件夹中。

如何让子包与 package 一起安装?

您的问题可能是packages参数。 它需要随每个模块或“包”一起提供。

setuptools有一个不错的 function 可以找到它们,像这样使用它: packages=setuptools.find_namespace_packages(),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM