使用 __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
这是我第一次尝试从不同的文件夹导入。结构如下:
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