所以,这是一个关于如何将 __init__.py 与子包一起使用的问题。我已经搜索过,令人惊讶的是没有找到合适的答案。
我有以下结构:
my_package/
setup.py
my_package/
__init__.py
module1.py
my_sub_package/
__init__.py
module2.py
my_package/__init__.py 的内容是
from . import my_sub_package
from .module1 import *
my_package/my_sub_package/__init__.py 的内容是
from .module2 import *
setup.py的内容是
from setuptools import setup
setup(
name='Prova Utils',
packages=['my_package'],
version='1.0.0'
)
我可以使用以下命令从父文件夹导入 python 中的包:
import my_package
当我安装软件包并在另一个文件夹(不包含 my_package)中运行它时,就会出现问题。 我使用以下方式安装软件包:
pip3 install my_package/ --upgrade --force-reinstall
然后,当我尝试在 Python 中导入它时
import my_package
导入错误:无法部分导入名称“my_sub_package” 初始化模块“my_package”(很可能是由于循环导入) (
/lib/python3.11/site-packages/my_package/__init__.py)
我做错了什么?
我正在按照他们在这个答案中所说的那样做:子包和__init__.py
显然,问题出在 setup.py 中,我需要在其中指定 my_sub_package 也是一个包:
from setuptools import setup
setup(
name='Prova Utils',
packages=['my_package','my_package.my_sub_package],
version='1.0.0'
)