使用 __init__.py 从不同文件夹导入文件在运行时不起作用

Importing files from different folder using __init__.py doesn't work in runtime

这是我第一次尝试从不同的文件夹导入。结构如下:

application
  │
  ├── __init__.py
  │
  ├── folder
  │     ├── file.py
        │
        └── __init__.py
  │ 
  └── folder2
      ├── some_file.py  
      │
      └── __init__.py

我想将 some_file 导入到 file.py 我试着做 from application.folder2 import some_file,但它不起作用: ModuleNotFoundError:没有名为 'application'.

的模块

注意:视觉代码将文件夹识别为模块,因此我只在 运行 时间内收到错误。

我按照这个答案link,这是最适合我的。

这里有什么问题?

TLDR:运行您的程序作为其包的一部分:

$ python3 -m application.folder.file

search path for modules 源自主脚本等。 运行宁

$ python3 application/folder/file.py

表示搜索路径在application/folder内——那里没有application模块。

由于应用程序似乎是一个包,所以使用 -m 切换到 运行 您的文件作为包结构的一部分:

$ python3 -m application.folder.file

这将查找application包(包括当前目录)并递归遍历到.folder.file。这保证了导入路径与包布局相匹配。

为了从另一个文件夹而不是包含 application 的文件夹使用它,请安装软件包或 set PYTHONPATH 指向 application 的父文件夹。

$ export PYTHONPATH=$(PYTHONPATH):/path/to/parent_of_application
$ python3 -m application.folder.file