我正在组织系统脚本,并尝试正确划分脚本。
我尝试使用
__init__.py
文件和动态调用,但它只是说找不到该文件
结构:
Main Folder
Module_Folder
Portal_Modules
Log_In.py
Script_Folder
Contractors
Contractor_Management.Py
我添加了以下内容
Main Folder
Module_Folder
__init__.py
Portal_Modules
__init__.py
Log_In.py
Script_Folder
Contractors
Contractor_Management.Py
模块文件夹
__init__.py
from Module_Folder.Portal_Modules.Log_In import Log_in
门户模块
__init__.py
from Portal_Modules.Log_In import Log_in
承包商_管理.Py
import Modular_Folder
我尝试了一些不同的变化,包括
sys.path
也做from Modular_Folder.Partal_Modules.Log_In import Log_In
这是错误
ModuleNotFoundError: No module named 'functions_modules.mods_argis_portal'
首先,Python 模块(里面有
__init__.py
文件的文件夹)应该全部小写,单词之间用下划线分隔。所以 Module_Folder
和 Portal_Module
可以写成 modules
(这里文件夹是多余的)和 portal_module
(你也可以放弃模块后缀,但这里并没有那么糟糕)。另外,如果 Log_In 是一个函数,它也应该是小写的(即 log_in
)。只有类遵循驼峰命名法(即 LogIn
而不是 Log_In
)。
两个
__init__.py
文件中的导入都是不正确的:除非您在 PYTHONPATH
变量中指定它们,否则它们不知道其父级。您可以尝试通过这样设置导入:我假设 Log_In
是一个函数。
#modules/__init__.py
from portal_module.log_in import log_in
通过执行此操作,您无需修改
portal_module/__init__.py
中的文件,因为您正在使 log_in
函数可用于父文件夹 (modules
),因此您将能够执行以下操作:
from modules import log_in
在你的情况下,我宁愿做其他事情,即直接从portal_module导入,首先将其导入到
portal_module/__init__.py
文件中,如下所示:
#portal_module/__init__.py
from log_in import log_in
然后像这样导入
log_in
函数:
#Any other py file under Main Folder
from modules.portal_module import log_in
因此,如果任何其他模块具有
log in
函数,您就可以明确要导入哪个 log in
函数。