Я родом из R и пытаюсь разработать API на Python, используя Flask.Моя папка выглядит примерно так:
project
--server.py
--custom_functions
----func1.py
----func2.py
--more_custom_functions
----subfolder1
------func3.py
------func4.py
----subfolder2
------func5.py
------func6.py
Я предпочитаю организовывать свои пользовательские функции в разные подпапки в зависимости от их назначения, так что custom_functions могут быть, например, функциями, связанными с очисткой и так далее.В идеале, когда я запускаю server.py, используя (в Windows CMD, если это помогает)
python server.py
в каталоге / проекте, я хотел бы иметь возможность импортировать каждую функцию.Функция выглядит как
import numpy as np
def func1 (x) :
return(x + 1)
и ничего более.
У меня такой вопрос: как при инициализации сервера (т.е. при python server.py
) импортировать каждый отдельный модуль (например, numpy / pandas ) глобально, такчто все подфункции могут использовать эти модули без вызова импорта внутри них, т.е. (в приведенном выше примере мы можем удалить import numpy as np
) и импортировать все функции func1
, func2
, ..., func6
?Я не против, если я буду называть их как custom_functions.func1
или more_custom_functions.subfolder1.func3
, скажем, при необходимости.
Я пробовал несколько вещей, таких как добавление __init__.py
в некоторые папки и добавление __all__ = ["func1", "func2"]
в этот файл (а также оставление его пустым).Я также попробовал
import sys, os
sys.path.append(os.getcwd() + '\\custom_functions')
import custom_functions
и варианты этого типа из импорта custom_functions *, но все безрезультатно.
Некоторые ошибки, которые я получаю, включают:
module 'custom_functions' has no attribute func1
или
name 'custom_functions' is not defined
.
В R я бы использовал что-то вроде source(dir, recursive=TRUE, pattern="*.R")
, а затем библиотеку / требовал все пакеты в самом начале кода, и все хорошо.Есть ли простой эквивалент?Или мне нужно переместить каждую функцию в один файл (скажем, functions.py ) и затем импортировать функции?
Спасибо за любую помощь.