我有一个 Python 2.7 项目,如下所示:
我的项目\
- __init__.py - __main__.py - foo.py
我想按照 PEP 8 的要求使用绝对导入,但是当我尝试在__main__
.py 中执行此操作时:
from myproject.foo import bar
和python -m myproject
我得到:
ImportError:没有名为 myproject.foo 的模块
我究竟做错了什么?
我有一个 Python 2.7 项目,如下所示:
我的项目\
- __init__.py - __main__.py - foo.py
我想按照 PEP 8 的要求使用绝对导入,但是当我尝试在__main__
.py 中执行此操作时:
from myproject.foo import bar
和python -m myproject
我得到:
ImportError:没有名为 myproject.foo 的模块
我究竟做错了什么?
经过一番谷歌搜索,结果发现,我需要做的就是添加:
from __future__ import absolute_import
这为 Python 3 添加了一些面向未来的功能。请注意,PyDev 无法以这种方式找到模块。我将为此打开一个单独的问题。
为此,myproject
必须在您的 Python 路径上。您可以通过设置PYTHONPATH
变量在外部执行此操作,也可以通过将其添加到程序内部来执行此操作sys.path
。
(请注意,除了 . 以外的任何名称都没有使用双下划线名称的约定__init__.py
。您__main__.py
的名称似乎很奇怪。)