ModuleNotFoundError 但 pkg_resources 找到了它
ModuleNotFoundError but pkg_resources found it
我在 Linux 机器上使用带有 python 3.7.9 的 venv,并使用 pip 安装了我的一个软件包。安装脚本应该没问题,因为在 windows 下使用 anaconda 没有问题。
我在开发模式和正常模式下安装了这个包。
如果我尝试导入我的包:
import my_package
我得到了众所周知的ModuleNotFoundError
。所以我检查了 sys.path
是否包含安装我的包的 site-packages 文件夹。
✅
好的,所以我检查了哪些软件包可用 pkg_resources
:
import pkg_resources
installed_packages = {d.project_name: d.version for d in pkg_resources.working_set}
print(installed_packages)
结果:
{'torchvision': '0.7.0', 'torch': '1.6.0', 'tensorboardX': '2.1', 'six': '1.15.0',
'setuptools': '47.1.0', 'protobuf': '3.13.0', 'pip': '20.2.3', 'Pillow': '7.2.0',
'numpy': '1.19.2', 'future': '0.18.2', 'my_package': '1.0', 'absl-py': '0.10.0'}
✅
如您所见,我的包裹列在 future 之后。
我不知道为什么 python 难以导入 my_package。
有人知道我做错了什么吗?
我已经测试了这些解决方案但没有结果:
python -m pip show --files 'BoxSupDataset'
Name: BoxSupDataset
Version: 1.0
Summary: UNKNOWN
Home-page: https://github.com/MaKaNu/PyTorch_Nasa_Dataset
Author: MaKaNu
Author-email: UNKNOWN
License: UNKNOWN
Location: /home/matti/GIT/PytorchLabs/Pytrochlabs-venv-3_7/lib/python3.7/site-packages
Requires:
Required-by:
Files:
BoxSupDataset-1.0-py3.7.egg-info/PKG-INFO
BoxSupDataset-1.0-py3.7.egg-info/SOURCES.txt
BoxSupDataset-1.0-py3.7.egg-info/dependency_links.txt
BoxSupDataset-1.0-py3.7.egg-info/top_level.txt
boxsupdataset/__init__.py
boxsupdataset/__pycache__/__init__.cpython-37.pyc
boxsupdataset/__pycache__/nasa_box_sup_dataset.cpython-37.pyc
boxsupdataset/__pycache__/utils.cpython-37.pyc
boxsupdataset/nasa_box_sup_dataset.py
boxsupdataset/transforms/__init__.py
boxsupdataset/transforms/__pycache__/__init__.cpython-37.pyc
boxsupdataset/transforms/__pycache__/denoise.cpython-37.pyc
boxsupdataset/transforms/__pycache__/utils.cpython-37.pyc
boxsupdataset/transforms/denoise.py
boxsupdataset/transforms/utils.py
boxsupdataset/utils.py
Python 3.7.9 (default, Aug 18 2020, 06:22:45)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import BoxSupDataset
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'BoxSupDataset'
>>>
问题似乎是由于项目名称(可以安装的东西)和顶级包的名称(可以安装的东西)之间的轻微混淆可以导入),一些区分大小写的问题增加了混乱...
在那种特殊情况下,该项目确实被命名为 BoxSupDataset
(这就是您要安装的名称)。但实际的 顶级包 是 boxsupdataset
,这是唯一对导入重要的东西:
import boxsupdataset
旁白:
虽然在某些(不区分大小写)平台上(例如Windows?)可能可以导入为import BoxSupDataset
,规范的方式是import boxsupdataset
(与包或模块完全相同的名称和外壳)。可以在 PEP 235.
中找到(有点令人困惑的)详细信息
我在 Linux 机器上使用带有 python 3.7.9 的 venv,并使用 pip 安装了我的一个软件包。安装脚本应该没问题,因为在 windows 下使用 anaconda 没有问题。
我在开发模式和正常模式下安装了这个包。
如果我尝试导入我的包:
import my_package
我得到了众所周知的ModuleNotFoundError
。所以我检查了 sys.path
是否包含安装我的包的 site-packages 文件夹。
好的,所以我检查了哪些软件包可用 pkg_resources
:
import pkg_resources
installed_packages = {d.project_name: d.version for d in pkg_resources.working_set}
print(installed_packages)
结果:
{'torchvision': '0.7.0', 'torch': '1.6.0', 'tensorboardX': '2.1', 'six': '1.15.0',
'setuptools': '47.1.0', 'protobuf': '3.13.0', 'pip': '20.2.3', 'Pillow': '7.2.0',
'numpy': '1.19.2', 'future': '0.18.2', 'my_package': '1.0', 'absl-py': '0.10.0'}
✅
如您所见,我的包裹列在 future 之后。
我不知道为什么 python 难以导入 my_package。 有人知道我做错了什么吗?
我已经测试了这些解决方案但没有结果:
python -m pip show --files 'BoxSupDataset'
Name: BoxSupDataset
Version: 1.0
Summary: UNKNOWN
Home-page: https://github.com/MaKaNu/PyTorch_Nasa_Dataset
Author: MaKaNu
Author-email: UNKNOWN
License: UNKNOWN
Location: /home/matti/GIT/PytorchLabs/Pytrochlabs-venv-3_7/lib/python3.7/site-packages
Requires:
Required-by:
Files:
BoxSupDataset-1.0-py3.7.egg-info/PKG-INFO
BoxSupDataset-1.0-py3.7.egg-info/SOURCES.txt
BoxSupDataset-1.0-py3.7.egg-info/dependency_links.txt
BoxSupDataset-1.0-py3.7.egg-info/top_level.txt
boxsupdataset/__init__.py
boxsupdataset/__pycache__/__init__.cpython-37.pyc
boxsupdataset/__pycache__/nasa_box_sup_dataset.cpython-37.pyc
boxsupdataset/__pycache__/utils.cpython-37.pyc
boxsupdataset/nasa_box_sup_dataset.py
boxsupdataset/transforms/__init__.py
boxsupdataset/transforms/__pycache__/__init__.cpython-37.pyc
boxsupdataset/transforms/__pycache__/denoise.cpython-37.pyc
boxsupdataset/transforms/__pycache__/utils.cpython-37.pyc
boxsupdataset/transforms/denoise.py
boxsupdataset/transforms/utils.py
boxsupdataset/utils.py
Python 3.7.9 (default, Aug 18 2020, 06:22:45)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import BoxSupDataset
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'BoxSupDataset'
>>>
问题似乎是由于项目名称(可以安装的东西)和顶级包的名称(可以安装的东西)之间的轻微混淆可以导入),一些区分大小写的问题增加了混乱...
在那种特殊情况下,该项目确实被命名为 BoxSupDataset
(这就是您要安装的名称)。但实际的 顶级包 是 boxsupdataset
,这是唯一对导入重要的东西:
import boxsupdataset
旁白:
虽然在某些(不区分大小写)平台上(例如Windows?)可能可以导入为import BoxSupDataset
,规范的方式是import boxsupdataset
(与包或模块完全相同的名称和外壳)。可以在 PEP 235.