2

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

我的项目\

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

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

from myproject.foo import bar

python -m myproject

我得到:

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

我究竟做错了什么?

4

2 回答 2

2

经过一番谷歌搜索,结果发现,我需要做的就是添加:

from __future__ import absolute_import

这为 Python 3 添加了一些面向未来的功能。请注意,PyDev 无法以这种方式找到模块。我将为此打开一个单独的问题。

于 2013-09-30T14:03:57.587 回答
1

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

(请注意,除了 . 以外的任何名称都没有使用双下划线名称的约定__init__.py。您__main__.py的名称似乎很奇怪。)

于 2013-09-30T13:14:57.793 回答