You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义包安装后无法定位内部模块问题求助

解决Python包安装后ModuleNotFound/ImportError问题

1. 检查setup.py的包声明

你的项目包含多层子包,必须在setup.py中正确声明所有需要打包的模块。如果仅指定packages=['demopackage'],setuptools可能无法自动识别所有子包,建议使用find_packages()自动扫描:

from setuptools import setup, find_packages

setup(
    name="demopackage",
    version="0.1",
    packages=find_packages(),  # 自动包含demopackage及所有子包
    entry_points={
        'console_scripts': [
            'demopackage = demopackage.main:main'  # 可选:添加命令行入口
        ]
    }
)

如果手动指定包,需列出所有层级:

packages=[
    'demopackage',
    'demopackage.config',
    'demopackage.processor',
    'demopackage.processor.dbprocessor',
    'demopackage.processor.fileprocessor',
    'demopackage.validation',
    'demopackage.util'
]

2. 修正代码中的导入方式

本地运行时相对导入可能有效,但安装后包作为第三方模块,必须使用绝对导入:

错误示例(相对导入,安装后失效):

from .config.dumyconfig import some_func
from ..util.dumyutil import another_func

正确示例(绝对导入):

from demopackage.config.dumyconfig import some_func
from demopackage.util.dumyutil import another_func

本地测试时建议用python -m demopackage.main代替直接运行python main.py,模拟安装后的环境逻辑。

3. 验证打包内容完整性

创建tar.gz后,解压查看内部结构,确认所有子包的__init__.py和模块文件都被包含。也可直接用命令查看:

tar -tvf dist/demopackage-0.1.tar.gz

确保demopackage/目录下包含所有子文件夹(config、processor等)及对应文件。

4. 排查Python路径与版本问题

安装后若模块存在仍报错,可在报错脚本中打印Python路径,确认site-packages在路径内:

import sys
print(sys.path)

同时检查安装和运行是否使用了同一Python版本(比如用pip3安装但用python运行,可能导致版本不匹配)。

5. 清理旧安装缓存

若之前安装过旧版本,可能存在缓存冲突,先卸载再重新安装:

pip uninstall -y demopackage
pip install dist/demopackage-0.1.tar.gz

内容的提问来源于stack exchange,提问作者Ashis Sahoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:22:42