Python构建wheel后pip安装找不到config模块如何解决?
Python Wheel包安装后导入提示找不到config模块问题解决
问题描述
我正在构建一个简单的Python wheel文件,构建过程运行正常,但该wheel依赖独立的config.py模块,在通过pip安装该wheel文件后导入模块时触发报错。
项目结构
/easypki /easypki /__init__.py /config.json /config.py /easypki.py README.md setup.py
核心文件内容
__init__.py
#!/usr/bin/python3 __version__ = "0.1" from . easypki import EasyPKI # 主类 from . config import Config # 配置类
setup.py
import pathlib from setuptools import setup, find_packages __here__ = pathlib.Path(__file__).parent README = (__here__ / "README.md").read_text() setup( name="easypki", version="0.1", description="更简洁的客户端PKI证书接口", long_description=README, long_description_content_type="text/markdown", url="https://wherever", author="me", author_email="my@email.com", license="MIT", classifiers=[ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7" ], packages=find_packages(), include_package_data=True, install_requires=["requests", "requests_pkcs12"], )
完整报错信息
>>> import easypki Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\easypki\__init__.py", line 7, in <module> from . easypki import EasyPKI File "C:\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\easypki\__init__.py", line 2, in <module> from config import Config ModuleNotFoundError: No module named 'config'
问题原因
报错根源为easypki.py内部导入config.Config类的写法不符合包内导入规则,原导入语句为from config import Config,属于绝对导入,无法在安装后的包环境中找到同目录下的config模块。
解决方案
我通过三处调整解决了该问题:
- 将
config.Config的导入语句移至easypki.EasyPKI的__init__()方法内部 - 将导入语句修改为
from .config import Config,改用包内相对导入规则 - 从
__init__.py中移除from .config import Config行,因config.Config类暂不支持直接外部调用,仅用于内部读取config.json的配置内容
内容的提问来源于stack exchange,提问作者auslander
相关产品推荐
相关产品推荐

