【问题标题】:Why can't absolute imports find my module?为什么绝对导入找不到我的模块?
【发布时间】:2013-10-06 08:56:05
【问题描述】:

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

我的项目\

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

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

from myproject.foo import bar

python -m myproject

我明白了:

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

我做错了什么?

【问题讨论】:

  • 您具体做了什么导致该异常? python -m myproject?如果是这样,请使用该信息编辑您的问题
  • 是的。我已经编辑了问题。

标签: python python-2.7 coding-style


【解决方案1】:

在谷歌搜索turns out 之后,我需要做的就是添加:

from __future__ import absolute_import

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

【讨论】:

  • 可能想在您的问题中提及您正在使用 Python 2.x(并为相关性也对其进行标记)
【解决方案2】:

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

(请注意,除了__init__.py 之外,没有任何约定可以在任何名称上使用双下划线名称。您的__main__.py 似乎是一个非常奇怪的名称。)

【讨论】:

  • __main__当你python -m一个包时被python理解。
  • 我使用了__main__.py,因为在运行python myproject 时,Python looks for it
  • 酷,不知为何我以前从未遇到过。
  • __main__.py 还允许您将项目压缩到myproject.zip(或其他)并运行python myproject、@DanielRoseman
  • @WayneWerner 谢谢!我不知道!
猜你喜欢
  • 2022-07-15
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
相关资源
最近更新 更多