You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

已安装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.py
    
    那推荐用find_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 mylib
    
    如果这样能成功导入,说明是安装时的路径配置问题,重新运行pip install -e即可。

5. 排查命名冲突

最后检查一下:

  • 不要把你的测试脚本命名为mylib.py,不然Python会优先导入当前目录的这个脚本,而不是你安装的包。
  • 确保运行Python的当前目录下没有同名的mylib文件夹,避免干扰。

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

火山引擎 最新活动