当前位置: 首页 > 面试题库 >

python中的绝对导入不起作用,相对导入起作用

叶衡虑
2023-03-14
问题内容

我似乎无法让绝对导入在python中工作。这是我的文件结构:

a/
  b/
    __init__.py
  __init__.py
  foo.py

foo.py:

# Including or removing the __future__ import has no effect
from __future__ import absolute_import
from a import b  # just `import b` works fine
print "success!"

我反而得到:

ImportError: No module named a

这到底是怎么回事?我觉得我缺少基本的东西。尽管这个例子很简单,但我需要绝对导入才能为实际项目工作,因此仅用相对导入替换导入是不可行的。我正在使用python
2.7.13

预先感谢您的任何见解!


问题答案:

由于未显示,因此我必须假设您正在运行python a/foo.py,这会将脚本('a')的目录放在开始的位置sys.path,而实际上您希望将当前目录放在的开始sys.path

您应该运行python -m a.foo它将正确初始化sys.path项目结构的根目录。

这是我以其他方式写过的更深入的论文,这个问题可以解决。



 类似资料:
  • 我似乎无法让绝对导入在python中工作。以下是我的文件结构: 福。py: 我反而得到: 这到底是怎么回事?我觉得我错过了一些基本的东西。虽然这个例子很简单,但我需要绝对导入来为实际项目工作,因此仅用相对导入替换导入是不可取的。我正在使用python 2.7。13 这里列出的解决方案都没有帮助 提前感谢您的任何见解!

  • 我有以下情况,其中a是目录: 所以当我从交互式提示中运行时: 为什么它没有找到第一个。py模块?我的意思是我希望没有错误;在导入运行期间,我认为它可以看到第一个。py已经加载,所以没有错误,它只是跳到中列出的下一个。

  • 这可能是个愚蠢的问题,但我无论如何也无法解决。我有一个JavaScript文件,其中包含我想要导出的各种函数。 当我调用这个方法(使用mocha)时,我得到一条错误消息“export function AddNumbers(…numbers)Unexpected token export”。该项目构建为ES6。有人知道我做错了什么吗? 最好的问候,托斯顿

  • 问题内容: 我正在使用Solr 4.2。请注意,完全导入有效,但增量导入却不起作用。增量导入不会产生任何错误,但不会获取任何更改。这是数据配置文件。 这是我没有运气的尝试。 将p.product_id =’$ {dih.delta.product_id}更改为p.product_id =’$ {dih.delta.id}以及其他方式。将updtime>’$ {dih.last_index_time

  • 问题内容: 大家好-我正在用Python中的相关知识来表达自己的观点。我已经阅读了30篇文档,并在SO和其他论坛上阅读了很多帖子-似乎还是行不通。 我的目录结构目前看起来像这样 我希望expander.py和language_id.py可以访问功能模块。我运行python main.py,可以从components.expander import 和components.language_id i

  • 我读了无数关于python中相对导入的讨论,我认为它如此令人困惑的原因之一是它在一个python版本之间发生了变化(我的版本是3.6)。但这里的罪魁祸首似乎是PyCharm(除非我弄错了..)我想知道是否有人找到了解决这个问题的办法。对于具有此布局的项目: 假设aa.py在文件中包含一些fuction,如果我编写这个导入: 因此,为了让PyCharm高兴,我可以将添加到导入中,然后错误似乎就解决了