当前位置: 首页 > 知识库问答 >
问题:

Python(3.4)中带有兄弟目录的绝对或相对导入[重复]

雷晋
2023-03-14

我的软件包要复杂得多,但这里的所有内容都被剥离出来,并作为一个例子更易于阅读:

sound/                         
      __init__.py               
      formats/                 
              __init__.py
              wavread.py
              wavwrite.py
      effects/                  
              __init__.py
              echo.py

(注意:我从官方教程中借用了这个结构)

我希望能够引用echo。从wavwrite中获取py。皮耶。

在wavwrite.py,我这样做了我的参考:

from ..effects import echo

我得到这个错误:

File "C:\sound\formats\wavwrite.py", line 1, in <module>
   from ..effects import echo
SystemError: Parent module '' not loaded, cannot perform relative import

我有一个朋友评论说,我应该尝试绝对导入,在这种情况下,我得到了一个不同的问题。

在wavwrite.py,我这样做了我的参考:

from effects import echo

import effects.echo as echo

我得到这个错误:

ImportError: No module named 'effects'

这一切在我看来都是正确的,因为我知道这应该是可行的,这让我发疯。一定是我错过了一些简单的东西。

共有1个答案

郑鸿朗
2023-03-14

所以我在其他地方找到了答案,但我不喜欢:

from sys import path
from os.path import dirname as dir
path.append(dir(path[0]))

from effects import echo

这个功能,但它看起来很难看,似乎应该是不必要的。有人能改进这一点吗?

 类似资料:
  • 问题内容: 如何从父目录进行相对导入? 来自: 这给出了一个模棱两可的错误: 如何从父目录本地导入? 问题答案: 感谢您添加到您的问题。首先是一个答案,然后是一些解释。我建立了您的代码, 去获得,就像你拥有它一样。(我忽略了错误消息。) 如您所愿,将导入行设置回“ ../../../meme”。 (注释掉一些包含未使用变量的代码。) 然后在梅梅/ CMD /米姆目录,要么或者工作。 刚才我说去安装

  • 问题内容: 我似乎无法让绝对导入在python中工作。这是我的文件结构: foo.py: 我反而得到: 这到底是怎么回事?我觉得我缺少基本的东西。尽管这个例子很简单,但我需要绝对导入才能为实际项目工作,因此仅用相对导入替换导入是不可行的。我正在使用python 2.7.13 预先感谢您的任何见解! 问题答案: 由于未显示,因此我必须假设您正在运行,这会将脚本()的目录放在开始的位置,而实际上您希望

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

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

  • 问题内容: 我想知道在Python应用程序中导入包的首选方法。我有一个这样的包结构: project.app1.views进口project.app1.models和project.app2.models。我想到有两种方法可以做到这一点。 绝对进口: 或具有明确的相对导入,如在Python 2.5中使用PEP 328引入的那样: 什么是最pythonic的方式做到这一点? 问题答案: 绝对进口。从

  • 问题内容: 在Python中使用相对导入有一个缺点,您将无法再独立运行模块,因为您将得到一个异常: 为了能够执行以下所有操作,我应该如何修改示例代码:和 我正在寻找适用于python 2.6+(包括3.x)的解决方案。 问题答案: 首先,我假设您意识到您编写的内容将导致循环导入问题,因为foo导入bar反之亦然;尝试添加 to test.py,您将看到它失败。必须更改示例才能正常工作。 因此,您要