【问题标题】:How to import a file that is in a top level folder?如何导入顶级文件夹中的文件?
【发布时间】:2021-01-08 18:02:44
【问题描述】:

我可以将文件“imagensAlertLoginExist.py”导入文件“alertLogin.py”吗?如果可能,我该如何导入?

我从来没有遇到过这个问题,所以我总是这样导入:

from folder1.folder2 import file

或:

from folder1.folder2.file import class

或者像这样:

from folder1.folder2.file import method

但是,我要导入的文件 (imagesAlertLoginExist.py) 不在我的主代码 (alertLogin.py) 下的同一文件夹或级别,因此,我的主代码看不到此文件 (imagesAlertLoginExist.py) .导入时如何指定要导入的模块在上面的文件夹中?

考虑最小的例子,就好像我要导入的模块在文件夹0中。

文件结构:

main.py
templates
    images
        alertLoginExist
            imagensAlertLoginExist.py
    interfaces
        alertLogin.py

【问题讨论】:

  • 你能分享你的代码文件和imagesAlertLoginExist文件之间的文件结构吗?
  • 是的,我会编辑问题。

标签: python import module


【解决方案1】:

如果您的文件结构是这样的,那么您需要像这样导入:-

如果您想将 imagensAlertLoginExist.py 文件中的“类”导入到 alterLogin.py 中,那么您可以像这样导入该类:-

File:-alterLogin.py

from template.images.alterLoginExist.imagensAlertLoginExist import class_name
             ***Please let me know if it not works.***

【讨论】:

  • 不幸的是它没有用。返回错误 'ModuleNotFoundError: No module named' template '',因为对模块的搜索开始于执行入口点脚本的位置,如 here! 所述。如果我将“imagesAlertLoginExist.py”添加到 sys.path,这将得到解决,但是这个解决方案不适用于我的问题。
  • 我不想从“imagesAlertLoginExist.py”文件中导入类,我想导入文件本身,因为它是 Python 的 Qt 资源文件。
  • 实际上您收到此错误是因为您的应用程序中的文件夹名称是“模板”而不是“模板”:- 如果您要导入“imagesAlertLoginExist. py" 文件,所以请试试这个它对我有用,希望它也对你有用:-from templates.images.alterLoginExist import imagensAlertLoginExist你也可以检查这个:-stackoverflow.com/questions/31643756/…
  • 不幸的是,错误仍然存​​在。您可以使用 21 PROmode 示例进行开发吗? (返回带有 '..' 的意大利面)
【解决方案2】:

根据 Python 文档:

在指定要导入的模块时,您不必指定 模块的绝对名称。包含模块或包时 在另一个包中可以进行相对导入 同一个顶级包,无需提及包名。经过 在您之后使用指定模块或包中的前导点 可以指定向上遍历当前包层次结构的高度 没有指定确切的名称。一个前导点表示当前 进行导入的模块所在的包。两个点表示向上 一个包级别。三个点是两个级别,等等。所以如果你执行 从 。从 pkg 包中的模块导入 mod 然后你将结束 向上导入 pkg.mod。如果你执行 from ..subpkg2 import mod from 在 pkg.subpkg1 中,您将导入 pkg.subpkg2.mod

在您的情况下,您可以这样做(如果您正在执行 main.py 文件):
 main.py

from template.interfaces import alertLogin  

alertLogin.py

print("Imported alertLogin")
from template.images import imagensAlertLoginExist

 imagensAlertLoginExist.py

print("Import imagensAlertLoginExist")

【讨论】:

  • 您好,感谢您的回复。我试过:` from ..images.alertLoginExist import imagensAlertLoginExist` 并返回以下错误:from ..images.alertLoginExist import imagensAlertLoginExistImportError: attempted relative import with no known parent package -
  • 你能分享一下你在哪个代码文件中导入imagensAlertLoginExist.py,你在执行哪个文件? (我想可以是 main.py)
猜你喜欢
  • 1970-01-01
  • 2018-04-28
  • 2012-11-09
  • 2015-05-31
  • 2018-07-19
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
  • 2017-12-14
相关资源
最近更新 更多