为什么绝对导入不能找到我的模块?

时间:2013-09-30 13:11:48

标签: python python-2.7 coding-style

我有一个Python 2.7项目,如下所示:

  

的myproject \

- __init__.py
- __main__.py
- foo.py

我想按照PEP 8的要求使用absolute imports,但是当我尝试在__main__中执行此操作时.py:

from myproject.foo import bar

使用python -m myproject

我明白了:

  

ImportError:没有名为myproject.foo的模块

我做错了什么?

2 个答案:

答案 0 :(得分:2)

再过Google搜索turns out之后,我需要做的就是添加:

from __future__ import absolute_import

这为Python 3添加了一些面向未来的证据。注意PyDev无法以这种方式找到模块。我会为此单独提出一个问题。

答案 1 :(得分:1)

为了实现这一点,myproject必须在您的Python路径上。您可以通过设置PYTHONPATH变量在外部执行此操作,也可以在程序内部将其添加到sys.path

(请注意,除__init__.py以外的任何内容都没有使用双下划线名称的惯例。您的__main__.py似乎是一个非常奇怪的名称。)