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

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


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”的模块。


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


我点击了这个最适合我的答案链接。

这里有什么问题吗?


千巷猫影
浏览 123回答 1
1回答

胡说叔叔

TLDR:将程序作为程序包的一部分运行:$ python3 -m application.folder.file模块的搜索路径源自主脚本等。跑步$ python3 application/folder/file.py意味着搜索路径在内部application/folder——没有application模块的地方。由于应用程序似乎是作为一个包无论如何,使用-m开关来运行您的文件作为包结构的一部分:$ python3 -m application.folder.file这将查找application包(包括当前目录)并递归遍历到.folder和.file。这保证了导入路径与包布局匹配。为了从包含该文件夹的文件夹之外的另一个文件夹中使用它application,请安装该包或设置PYTHONPATH为指向 的父文件夹application。$ export PYTHONPATH=$(PYTHONPATH):/path/to/parent_of_application $ python3 -m application.folder.file
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python