Python如何将自定义函数导入另一个脚本(任务调度器中的问题)

Python如何将自定义函数导入另一个脚本(任务调度器中的问题),python,taskscheduler,windows-task-scheduler,Python,Taskscheduler,Windows Task Scheduler,我必须将自定义函数从脚本A导入脚本B,并在脚本B中执行它们 现在看起来是这样的: import importlib import sys MODULE_PATH = 'C://foo//bar//__init__.py' # A.py is in bar folder and contains A.py and __init__.py MODULE_NAME = "A" spec = importlib.util.spec_from_file_location(MODULE_NAME, MOD

我必须将自定义函数从脚本A导入脚本B,并在脚本B中执行它们

现在看起来是这样的:

import importlib
import sys

MODULE_PATH = 'C://foo//bar//__init__.py' # A.py is in bar folder and contains A.py and __init__.py
MODULE_NAME = "A"
spec = importlib.util.spec_from_file_location(MODULE_NAME, MODULE_PATH)
module = importlib.util.module_from_spec(spec)
sys.modules[spec.name] = module
spec.loader.exec_module(module)

脚本_B.py

import os
import sys
from A import function_aa
from A import function_ab
from A import function_ac


def main():
    function_aa()
    function_ab()
    function_ac()

if __name__ == "__main__":
    main()


如果我在IDE中运行它,它是正常的,但是Windows任务计划程序无法识别这些自定义函数,并抛出一个错误
ModuleNotFoundError:没有名为“A”的模块

好的,我试着包括一个路径到一个类似这样的:

import importlib
import sys

MODULE_PATH = 'C://foo//bar//__init__.py' # A.py is in bar folder and contains A.py and __init__.py
MODULE_NAME = "A"
spec = importlib.util.spec_from_file_location(MODULE_NAME, MODULE_PATH)
module = importlib.util.module_from_spec(spec)
sys.modules[spec.name] = module
spec.loader.exec_module(module)

然后我出现了以下错误
ImportError:无法从“A”导入名称“function\u aa”


导入自己的函数时,是否有任何解决此任务计划程序问题的方法

在您的代码中有一行,错误在哪里

MODULE_PATH = 'C://foo//bar//__init__.py'
会是

MODULE_PATH = "C:\\foo\\bar\\__init__.py"

在Windows操作系统中,路径使用反斜杠写入,这是因为IDE生成了
\uuuu pycache\uuuu
,在Linux中也类似于that@ArtyomVancyan有什么解决办法吗?我的意思是,我不能将所有内容都放在一个大文件中。
模块路径
应该是指向目录的路径,而不是
\uuuu init\uuuuuuuuuupy
(或任何其他)文件。@martineau成功了,谢谢!可以从不同的文件或目录中导入多个自定义模块而不是一个吗?安娜:当然可以。只需将您正在使用的代码新建到一个函数中,该函数已传递一个或多个扩展,这些扩展告诉它要导入哪个模块(如其名称和路径),并使用函数代码中的那些模块,而不是现在函数中的硬编码值。完成后,您可以对不同的模块多次调用它。不幸的是,它不起作用它不会抛出模块名称:在当前文件夹中是否有你的
A.py
文件?@AnnaDmitrieva我找到你的错误并编辑我的答案在Windows上定义路径字符串常量的正确方法是
module\u path='C:/foo/bar/\uuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.py'
模块路径=r'C:\foo\bar\\uuuuu init\uuuuu.py'
。然而,这不是OP代码的问题(或者至少不是整个问题)。