属性错误:模块“”没有属性“__path__”。

15

我遇到一个问题,但我不知道如何进一步进行调试。

我的项目有不同的目的,其中包含使用Python 3等内容。我创建了一个名为package的Python包。该包的顶级目录位于myproject/python/内。在文件系统中,它具有以下结构:

- /home/myuser/myproject/python
--- package/
------ __init__.py
------ myutil.py
------ sub_package/
---------- __init__.py
---------- sub_sub_package/
-------------- __init__.py
-------------- myscript.py

所有的 __init__.py 文件都是空白的,除了根目录下的一个 (package/__init__.py),它包含以下内容:

from . import myutil

目前为止一切都很好。 文件myscript.py实际上是一个Python脚本,可以直接运行。 由于它位于包内,我会按照这种方式执行它:

cd /home/myuser/myproject/python
python -m package.sub_package.sub_sub_package.myscript

现在是奇怪的部分。脚本按预期工作。但是,在程序结束后,我收到以下消息:

/usr/bin/python3: Error while finding module specification for 
'package.sub_package.sub_sub_package.myscript.py'
(AttributeError: module 'package.sub_package.sub_sub_package.myscript' 
has no attribute '__path__')

我一直在网上搜索,但没有结果。无法确定是什么导致了这个消息以及如何解决它。我猜测这可能是Python 3的导入处理的某些奇怪行为,但是我毫无头绪。非常感谢任何帮助。


请查看此线程中的解决方案 -> https://stackoverflow.com/questions/54030519/python-tornado-attributeerror-module-test-has-no-attribute-path。谢谢。 - Corkscrew
2个回答

9

有两种方法可以运行文件名为'fibo.py'的Python 3脚本:

所需参数为.py文件的名称。

python fibo.py

参数是Python模块的名称,不包括.py扩展名。
python -m fibo

1

您在最后一个子目录 sub_sub_package 中没有 __init__.py 文件

尝试在那里添加一个空的 __init__.py 文件


6
我已经做了那件事,但行为似乎没有变化。 - Blitzkoder
1
这似乎类似于此问题 https://dev59.com/IVoV5IYBdhLWcg3wc-jo - Landar
1
我已经看过那个了。在那个问题的答案中,主要关注点是使用 -m 标志,而我已经在使用了。 - Blitzkoder

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