pip安装私有Python包后无法导入Class1类,求排查原因
解决方法
1. 检查包的安装结构与配置
你的包目前根目录是python_package,pip安装后,utils是python_package的子包而非顶层包,因此默认只能通过from python_package.utils import Class1导入。
如果想直接用from utils import Class1,可以调整以下任意一项:
- 调整目录结构:把
utils目录移到项目根目录(和setup.py/pyproject.toml同级),不再嵌套在python_package文件夹内。 - 修改打包配置:在
setup.py(或pyproject.toml)中明确指定packages=['utils'],同时确保utils目录和配置文件处于同一层级。
2. 优化__init__.py的导入方式
虽然from .module1 import *理论上能导入Class1,但推荐更明确的写法避免潜在问题:
# utils/__init__.py from .module1 import Class1 from .module2 import * # 也可以明确列出module2中需要导出的成员
如果坚持使用import *,可以在module1.py中添加__all__列表明确导出成员:
# utils/module1.py __all__ = ['Class1'] class Class1: # 类实现代码
3. 验证安装正确性
重新打包安装后,在Python环境中执行以下命令验证:
import utils print(dir(utils))
若输出结果包含Class1,说明导入配置正常。
内容的提问来源于stack exchange,提问作者AliE02
相关产品推荐
相关产品推荐

