我有一个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的模块
我做错了什么?
答案 0 :(得分:2)
再过Google搜索turns out之后,我需要做的就是添加:
from __future__ import absolute_import
这为Python 3添加了一些面向未来的证据。注意PyDev无法以这种方式找到模块。我会为此单独提出一个问题。
答案 1 :(得分:1)
为了实现这一点,myproject
必须在您的Python路径上。您可以通过设置PYTHONPATH
变量在外部执行此操作,也可以在程序内部将其添加到sys.path
。
(请注意,除__init__.py
以外的任何内容都没有使用双下划线名称的惯例。您的__main__.py
似乎是一个非常奇怪的名称。)