Python как импортировать пользовательскую функцию в другой скрипт (проблема в планировщике заданий) - PullRequest
2 голосов
/ 26 февраля 2020

Мне нужно импортировать пользовательские функции из сценария A в сценарий B и выполнить их в сценарии B.

Теперь это выглядит так:

Script_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 Task Scheduler не распознает эти пользовательские функции и выдает ошибку ModuleNotFoundError: No module named 'A'

ОК. Я попытался указать путь к 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: cannot import name 'function_aa' from 'A'

Есть ли способ обойти эту проблему планировщика заданий при импорте вашей собственной функции?

1 Ответ

0 голосов
/ 26 февраля 2020

в вашем коде есть строка, где ваша ошибка

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

будет

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

в Windows Пути ОС записывает с backsla sh

...