首页 > 解决方案 > 使用 pip 安装的本地包虽然显示在 pip 列表中,但无法导入

问题描述

从我之前使用 pip 安装的文件系统导入两个本地(自写)包时遇到问题。我正在使用一个virtualenv,我也验证它已被激活,即python指向pipvirtualenv。这两个不同的包被组织在一个仓库中,如下所示:

├── .venv
│   └── ...
├── folder_a
│   ├── package_a
│   │   ├── __init__.py
│   │   ├── a.py
│   │   └── subpackage_same_name
│   │       └── ...
│   ├── pyproject.toml
│   ├── requirements.txt
│   └── setup.cfg
├── folder_b
│   ├── package_b
│   │   ├── __init__.py
│   │   ├── subpackage_b_exclusive
│   │   │   └── ...
│   │   ├── b.py
│   │   └── subpackage_same_name
│   │       └── ...
│   ├── pyproject.toml
│   ├── requirements.txt
│   ├── setup.cfg
│   └── tests
│       └── ...

我使用以下命令从上述树的根目录安装这两个包(激活了 virtualenv):

pip install ./folder_apip install ./folder_b

安装成功,包如图所示pip list。但是,当我尝试导入package_a时,a.py我得到一个ModuleNotFoundError: No module named 'package_a'.

我无法在这里找出问题,它是virtualenv(注意.venv树中的)相对于包定义的位置吗?我在监督什么吗?任何帮助表示赞赏!

标签: pythonpippackagemodulenotfounderror

解决方案


sys.path变量告诉你 Python 在哪里寻找导入。在执行 import 语句之前检查它,您将看到您的模块是否在显示的文件夹之一中,或者您是否需要在模块名称之前添加额外的点分隔路径元素。


推荐阅读