【问题标题】:Python does not find a module on "import" (minimal project, no external imports)Python 在“导入”上找不到模块(最小项目,没有外部导入)
【发布时间】:2016-03-24 10:40:48
【问题描述】:

我这里有一个奇怪的错误。 Python 无法导入模块,即使我清楚地看到它在那里。这也不是一个复杂的设置,有很多路径,只是一个小项目。

我运行test.py。它导入模块stencils。在加载过程中,stencils/__init.py__ 被调用。此文件找不到模块Stencil,即stencils/Stencil.py

此外:

  • 直接运行stencils/__init__.py:有效。
  • 运行stencils/Abc.py:有效。
  • 运行test.py:给出错误:
Traceback (most recent call last):   File "/Users/mi/stencilcodegen/test.py", line 1, in <module>
import stencils   File "/Users/mi/stencilcodegen/stencils/__init__.py", line 1, in <module>
import Stencil ImportError: No module named 'Stencil'

__init__.py:

import Stencil
import Abc

Abc.py:

import Stencil
stencil = Stencil.Stencil

Stencil.py:(可能不相关,因为它根本找不到模块。)

class Stencil:
    def __init__(self):
        a = 1;

test.py:

import stencils
a = stencil.Stencil

目录截图(PyCharm)

【问题讨论】:

  • 不应该是 stencils.Stencil 吗?
  • 可能会出现后续错误,但目前的问题是它确实找到并调用了stencils/__init.py__,但是这个文件没有找到一个名为Stencil的模块。

标签: python python-3.x


【解决方案1】:

我有一个类似的问题,我偶然找到了解决方案。

您的test.py 文件是“根”文件,因此当您使用其中的任何代码时,您必须从这个角度查看层次结构。您必须像这样在子文件夹中导入文件:

以 __init_.py 为例:

import stencils.Stencil as Stencil
import stencils.Abc as Abc

由于您要导入模块和函数以及文件夹stencils 中的任何内容,因此您仍然必须提供指向函数或任何内容的存储位置的清晰路径。对不起,我的表达不好,我是德国人。

【讨论】:

  • 重命名而不实际重命名是不必要的名称重复:from stencils import Abc, Stencil
猜你喜欢
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
相关资源
最近更新 更多