已安装Python模块找不到:自定义setup.py安装后无法导入mylib
解决Windows+Conda环境下
import mylib报错的问题 我来帮你排查这个明明显示安装成功却导入失败的问题——这种情况在Windows+Conda环境里其实挺常见的,咱们一步步来定位解决:
1. 先确认你在正确的Conda环境里操作
有时候很容易犯的小错误:你在rig环境里安装了包,但运行Python的时候可能不小心切到了base环境或者其他环境。
- 检查当前激活环境:运行命令
看输出里带conda info --envs*标记的是不是rig环境。 - 或者在Python里验证:打开Python控制台,输入
输出的路径应该是import sys print(sys.executable)rig环境下的Python可执行文件(比如类似C:\Users\你的用户名\.conda\envs\rig\python.exe)。如果不是,先运行conda activate rig切换到正确环境,再试导入。
2. 检查setup.py的配置是否正确
这是最容易出错的地方,尤其是包的定义部分:
- 确保
setup.py里的name参数是'mylib'——这个名字要和你import的名字完全一致,也是pip list里显示的包名。 - 确认
packages参数正确包含了你的模块。如果你的目录结构是:
那推荐用my-project-folder/ setup.py mylib/ __init__.py other_modules.pyfind_packages()自动发现包,或者手动指定packages=['mylib']。示例正确的setup.py片段:
如果你的from setuptools import setup, find_packages setup( name='mylib', version='1.2.3', packages=find_packages(), # 自动识别所有包含__init__.py的子文件夹 # 或者手动指定:packages=['mylib'] )mylib没有__init__.py文件,Python不会把它识别为可导入的模块,记得补上这个文件(可以是空文件)。
3. 验证开发模式安装的路径是否正确
你用了pip install -e "path to lib",这里的路径必须是包含setup.py文件的那个文件夹,而不是mylib子文件夹。比如setup.py在C:\code\my-library,那命令应该是:
pip install -e C:\code\my-library
- 可以检查
rig环境的site-packages目录里的mylib.egg-link文件(路径大概是C:\Users\你的用户名\.conda\envs\rig\Lib\site-packages\mylib.egg-link),打开它看看里面的路径是不是指向正确的文件夹。如果路径错了,重新运行正确的pip install -e命令。
4. 检查Python的sys.path是否包含包路径
开发模式安装会把你的包路径添加到Python的sys.path里,如果没加上就会找不到模块:
- 在Python控制台输入:
看看你的import sys print(sys.path)mylib所在的父文件夹(也就是包含setup.py的那个文件夹)是不是在这个列表里。 - 如果不在,可以手动临时添加测试:
如果这样能成功导入,说明是安装时的路径配置问题,重新运行sys.path.append("C:\path\to\your\project-folder") import mylibpip install -e即可。
5. 排查命名冲突
最后检查一下:
- 不要把你的测试脚本命名为
mylib.py,不然Python会优先导入当前目录的这个脚本,而不是你安装的包。 - 确保运行Python的当前目录下没有同名的
mylib文件夹,避免干扰。
内容的提问来源于stack exchange,提问作者Dangraf




