【问题标题】:How can I import another module in the same parent directory?如何在同一个父目录中导入另一个模块?
【发布时间】:2015-03-11 09:26:05
【问题描述】:

我有两个文件,foo/a.py

def haha():
    print("haha")

还有bar/b.py

import foo.a as a

我没能跑到b.py,用:

> python bar/b.py 
Traceback (most recent call last):
  File "bar/b.py", line 1, in <module>
    import foo.a
 ImportError: No module named 'foo'

我做错了什么?

【问题讨论】:

标签: python


【解决方案1】:

是的,在../foo/ 位置添加__init__.py

并使用以下内容:

我的目录结构如下:/home/test/foo/a.py/home/test/bar/b.py

import sys
sys.path.append('/home/test')
from foo import a
try:sys.path.remove('/home/test')
except:pass

【讨论】:

    【解决方案2】:

    Python 只能在 PYTHONPATH 上找到模块。设置方法见this question

    模块可以位于顶层,也可以位于中。如果运行 python bar/b.py,则 b.py 所在的目录会隐式添加到 Python 路径中。 foo/ 和 bar/ 所在的目录对于 Python 来说是未知的,更不用说包含 a.py 的目录了。

    您可以将“./foo”添加到 PYTHONPATH。然后'import a'就可以了。

    如果你想让 'import foo.a' 工作,那么 'foo' 必须是一个包,并且必须可以找到它。为此,请添加“。” (包含 foo/' 的目录到 Pythonpath,并将一个名为 __init__.py 的空文件(注意这是双下划线)放在与 a.py 相同的目录中。这使 foo 成为一个包,而 foo该包中的 .aa 模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      相关资源
      最近更新 更多