如何修复由pip安装的包出现“__path__属性未找到”错误?

71

我最近使用pip install安装了opencv包,并编写了一个小代码来测试它(cvtest.py)。代码可以在python idle shell中运行,但在命令提示符下运行会出现错误。

Error while finding module specification for 'cvtest.py' (ModuleNotFoundError: __path__ attribute not found on 'cvtest' while trying to find 'cvtest.py')

我已经尝试卸载并重新安装Python和包,使用python -m site查找系统路径的结果如下。我的笔记本电脑只有我一个用户。

sys.path = [
'C:\\Users\\Kareem Mostafa\\Desktop\\Assignments\\computer vision',
'G:\\Python37\\python37.zip',
'G:\\Python37\\DLLs',
'G:\\Python37\\lib',
'G:\\Python37',
'G:\\Python37\\lib\\site-packages',

这是我正在使用的代码

import cv2
x=cv2.imread('backpack for sale.jpg',0)
cv2.imshow('x',x)

更新:我所有的py文件都出现了这个问题,无论它们是否需要导入。显然,Python会像处理包一样查找所有文件中的_init_.py文件。有任何想法是怎么回事吗?

1个回答

220

如果还有其他人遇到了这个问题(假设kareemostafa现在已经解决了它!)

python -m命令后面移除.py后缀可以解决这个问题,看起来-m只需要模块名称,而直接作为Python文件运行(无-m选项)则需要.py后缀。

在你的情况下,python -m cvtest 应该就足够了。


6
我在使用一个自定义的 Windows 命令行包装器 (ConEmu) 时遇到了同样的问题,你提供的解决方案起作用了! - YoniXw
1
我有一个嵌套结构,没有使用.py文件,仍然遇到错误。 - s2t2
1
@s2t2 当我在错误的目录下运行时,出现了这个错误(它包含一个与要运行的py -m aaa.bbb包(目录)aaa同名的文件aaa.py)。我改变了目录并且它能够工作了。 - Antony Hatchkins
1
奇怪,我之前用 .py 后缀运行过这个命令。 - Blairg23
一开始它抱怨文件中的代码内容,我只需要几个步骤就能解决,显然 python3 -m 在执行之前会打开文件。最终,仅仅因为文件名后缀,它仍然无法执行。 - questionto42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接