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

Python包通过Pip交付的最小要求及安装后导入失败求助

问题原因与解决方案

核心问题

你的本地包目录名为my_package(带下划线),但setup.py里的name参数设为mypackage(无下划线),两者不匹配。find_packages()会自动识别当前目录下带__init__.py的子目录作为待打包的包,也就是my_package,所以安装后虚拟环境的site-packages里实际存在的包是my_package,而非你尝试导入的mypackage,最终导致ModuleNotFoundError。

具体修复方案(二选一即可)

方案1:统一包目录名与setup中的name

将本地的my_package目录重命名为mypackage(去掉下划线),保持和setup.py里的name参数一致。修改后find_packages()会正确识别mypackage作为要分发的包,安装后就能正常执行import mypackage。

方案2:显式指定要打包的包

如果不想修改目录名,直接修改setup.py中的packages参数,明确指定实际的包目录名:

from setuptools import setup, find_packages

setup(
    name='mypackage',
    version='0.1',
    description='My Package',
    author='Its me',
    author_email='my.email@address.moon',
    packages=['my_package'],  # 改为实际的包目录名
    install_requires=[
        'cx_Oracle>=7.2.2'
    ]
)

同时测试文件里的导入语句要对应实际包名:

import cx_Oracle
print(cx_Oracle.version)
import my_package  # 对应目录名

验证步骤

  1. 修复后重新生成分发包:
python setup.py sdist
  1. 在虚拟环境中重新安装新生成的包:
pip install <完整路径到dist\mypackage-0.1.tar.gz>
  1. 运行测试文件,确认导入正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:33:20