AttributeError: 模块 '' 没有属性 '__path__'

Bli*_*der 12 python module package python-3.x

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

我有一个具有不同目的的项目,其中使用了 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
Run Code Online (Sandbox Code Playgroud)

所有__init__.py文件都是空白的,除了根文件(package/__init__.py),它具有以下内容:

from . import myutil
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。文件myscript.py实际上是一个直接运行的 Python 脚本。由于它驻留在包中,因此我正在执行它:

cd /home/myuser/myproject/python
python -m package.sub_package.sub_sub_package.myscript
Run Code Online (Sandbox Code Playgroud)

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

/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__')
Run Code Online (Sandbox Code Playgroud)

我一直在网上搜索,但无济于事。无法弄清楚是什么导致了此消息以及如何解决它。我猜这是 Python 3 的导入处理的一些晦涩的行为,但不知道。任何帮助是极大的赞赏。

Mig*_*más 9

使用文件名“ ”运行 python 3 脚本的两种方法fibo.py

参数是 .py 文件的名称。

python fibo.py
Run Code Online (Sandbox Code Playgroud)

参数是Python模块的名称,不带.py

python -m fibo
Run Code Online (Sandbox Code Playgroud)


Lan*_*dar 1

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

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

  • 我已经这样做了,行为似乎是一样的。 (6认同)