已执行pip install -e .仍无法导入自定义library库,提示模块不存在
问题排查与解决
你遇到的ModuleNotFoundError: No module named 'library',大概率是以下几个原因导致的,对应解决方法如下:
1. Jupyter Notebook的Python环境与安装库的环境不匹配
你用pip install -e .安装库的环境,和Jupyter Notebook正在使用的Kernel环境可能不是同一个。比如你在虚拟环境里安装了库,但Notebook用的是系统默认的Python环境。
解决方法:
- 先确认安装库的Python路径:在终端执行
which python(Linux/macOS)或where python(Windows),记下路径。 - 在Jupyter Notebook中执行以下代码,查看当前Kernel的Python路径:
import sys print(sys.executable) - 如果两个路径不一致,需要给Notebook添加对应环境的Kernel:
- 激活安装了library的环境(如果用虚拟环境的话)
- 执行
pip install ipykernel - 执行
python -m ipykernel install --user --name=自定义环境名(比如你的虚拟环境叫myenv,就写--name=myenv) - 重启Notebook,切换到刚添加的Kernel,再尝试导入library。
2. 子目录缺少__init__.py文件
Python的包需要__init__.py文件来标识目录为可导入的包。你的library/datasets、library/models、library/models/LightGBM这些子目录里可能没有这个文件,导致setuptools没有正确识别这些子模块,或者导入时找不到。
解决方法:
- 在以下目录下创建空的
__init__.py文件:library/datasets/__init__.pylibrary/models/__init__.pylibrary/models/LightGBM/__init__.py
- 重新执行
pip install -e .,然后重启Notebook尝试导入。
3. 安装时的路径问题(少见但需排查)
如果上面两种方法都不行,可以手动检查site-packages里的链接是否正确:
- 找到Python环境的site-packages目录(可以用
python -c "import site; print(site.getsitepackages())"查看) - 查看是否有
library.egg-link文件,里面的路径是否指向你的项目根目录下的library文件夹。 - 如果路径错误,删除该文件,重新执行
pip install -e .。
另外补充一个细节:你的Preprocess.py里直接调用ledgerline.getLedgerCredit()是错误的,需要先实例化LedgerLine类再调用方法,不过这和当前的导入错误无关,只是后续运行代码时会遇到的问题。
内容的提问来源于stack exchange,提问作者Luis Valencia
相关产品推荐
相关产品推荐

