我在Linux机器上使用了一个带有python 3.7.9的venv,并安装了一个带pip的软件包。安装脚本应该很好,因为在带有anaconda的windows下没有问题。
我在开发模式和正常模式下安装了这个包。
如果我尝试用导入我的包
import my_package
我得到了众所周知的ModuleNotFoundError
。因此,我检查了sys.path
是否包括安装我的软件包的站点软件包文件夹。
✅好的,所以我检查了哪些包裹可以使用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'}
✅正如你所看到的,我的包裹在未来之后列出。
我不知道python为什么难以导入my_package。有人知道我做错了什么吗?
我已经测试了这些解决方案,但没有结果:
shebang用于在pyenv-virtualenv 下运行的python脚本
在virtualenv 中找不到Python模块
未在中找到安装有PIP的模块
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中找到。