【问题标题】:AttributeError: module '' has no attribute '__path__'AttributeError:模块''没有属性'__path__'
【发布时间】:2019-02-18 10:10:57
【问题描述】:

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

我有一个具有不同目的的项目,其中使用了 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 导入处理的一些模糊行为,但不知道。 非常感谢任何帮助。

【问题讨论】:

标签: python python-3.x module package


【解决方案1】:

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

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

【讨论】:

  • 我已经这样做了,行为似乎是一样的。
  • 这似乎类似于这个问题stackoverflow.com/questions/36230492/…
  • 我已经看过那个了。该问题的答案中的主要问题是使用 -m 标志,我已经这样做了。
【解决方案2】:

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

参数是 .py 文件的名称。

python fibo.py

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

python -m fibo

【讨论】:

    猜你喜欢
    • 2019-05-30
    • 1970-01-01
    • 2014-08-15
    • 2018-04-14
    • 1970-01-01
    • 2020-01-01
    • 2019-07-20
    • 2021-11-05
    相关资源
    最近更新 更多