【问题标题】:Python - Import python file in the same dir actually imports the class inside that file with the same name instead of the filePython - 在同一个目录中导入 python 文件实际上是在该文件中导入同名的类而不是文件
【发布时间】:2017-05-03 13:27:19
【问题描述】:

这里的第一个问题,在问这个问题之前已经做了很长时间的研究,但似乎无法弄清楚。

我正在尝试通过标准导入语句导入同一目录中的文件:

import foo

文件如下所示:

project_folder
---->foo
---->etc.

即使工作目录看起来井井有条,它也不起作用。我得到的错误是 foo 正在尝试导入一个自制模块,该模块再次导入该模块内的另一个文件。所以会发生以下情况:

file = wip_file.py
>import foo
------------
file = foo.py
>from spam import eggs, bacon
------------
file = eggs.py
>import bacon

其中 spam 是站点包中的自创模块。现在我收到的错误是在 egg.py 中导入它时没有名为 bacon 的模块。有趣的是,在 foo.py 中成功导入了 bacon。

然后我尝试通过上面的文件夹名导入:

from project_folder import foo

但是,通过这种方式,它在文件 foo 中导入了类,该文件也被称为 foo。相同的脚本在另一台 PC 上运行良好。所以我想我在 PyCharm 中的路径有些混乱。有没有人对如何解决这个问题、重置标准或我可以尝试的任何其他事情有任何建议?

提前非常感谢!

【问题讨论】:

  • 您的模块是否有一个空的 _init_.py 文件?这就是 python 如何知道它是您要导入的模块的方式。另外,你用的是什么版本的python?
  • 模块foo 没有命名为foo.py?这会导致问题。
  • 在自建模块中确实有一个init文件。我正在使用 Python 3.6,另一个 PC 3.4。但是到目前为止,我们对此没有任何问题。. foo.py 文件不是模块。
  • 是的 foo 是一个 foo.py。我只想从那个文件中导入一个方法。
  • “它似乎不起作用”:它在什么方面不起作用?你怎么知道它不起作用?明确并编辑问题。

标签: python import path


【解决方案1】:

我终于明白了。在 egg.py 中导入错误的一种或另一种方式。应该是:

from . import bacon

现在一切正常。

感谢您的快速回复!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2020-02-03
    相关资源
    最近更新 更多