自定义Python库导入异常:仅部分模块可导入及内部引用问题
自定义Python库导入问题解决方案
1. 先确认规范的目录结构
你的库必须有正确的层级,每个子目录都要加空的__init__.py,示例结构:
mylib/ __init__.py colors.py codes.py plot.py utils/ __init__.py utils.py
缺了__init__.py的目录不会被Python识别为可导入的包。
2. 修正plot.py的导入路径
把plot.py里的绝对导入改成相对导入,避免环境路径冲突:
# 原错误写法 # from mylib.utils.utils import function # 改为相对导入 from .utils.utils import function
如果utils目录的__init__.py已经导入了utils.py的函数,还可以简化成:
from .utils import function
3. 调整根目录__init__.py
别用from .module import *这种容易出问题的写法,显式导出需要对外暴露的模块:
# mylib/__init__.py from . import colors from . import codes from . import plot
这样用户就能直接执行from mylib import codes、from mylib import plot正常导入。
4. 重新安装验证
先卸载现有版本:
pip uninstall mylib -y
再重新从GitHub安装:
pip install git+repo_url
之后测试导入是否正常。
关键配置检查
确保你的打包配置文件(setup.py或pyproject.toml)正确识别所有子包,比如setup.py里用find_packages()自动扫描:
from setuptools import setup, find_packages setup( name="mylib", version="0.1", packages=find_packages(), # 其他必要配置(比如作者、依赖等) )
如果没配置正确,utils这类子目录不会被打包进安装包,自然会出现找不到模块的错误。
内容的提问来源于stack exchange,提问作者itendswells
相关产品推荐
相关产品推荐

