Невозможно импортировать функцию из-за пределов текущего рабочего каталога - PullRequest
0 голосов
/ 24 мая 2019

В настоящее время у меня возникают проблемы с импортом некоторых функций, которые находятся в файле python, который находится в родительском каталоге рабочего каталога основного сценария приложения фляги. Вот как выглядит структура

project_folder
- public
--app.py
-scripts.py

вот код реплики для app.py:

def some_function():
    from scripts import func_one, func_two
    func_one()
    func_two()
    print('done')


if __name__ == "__main__":
    some_function()

scripts.py содержат функцию как таковую:

def func_one():
    print('function one successfully imported')


def func_two():
    print('function two successfully imported')

Как питонный способ импортировать эти функции в моем app.py?

Ответы [ 2 ]

1 голос
/ 24 мая 2019

1.

import importlib.util

def loadbasic():
    spec = importlib.util.spec_from_file_location("basic", os.path.join(os.path.split(__file__)[0], 'basic.py'))
    basic = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(basic)
    return basic #returns a module
  1. Или создать в каталоге пустой файл __init__.py.

И

  1. не загрязняйте свой путь дополнениями.
1 голос
/ 24 мая 2019

Предварите его точкой, чтобы он выполнял поиск в текущем каталоге (project_folder) вместо вашего пути к питону:

from .scripts import func_one, func_two

Подробности относительного импорта описаны в PEP 328

Редактировать: я предполагал, что вы работаете с пакетом.Попробуйте добавить файл __init__.py.

В любом случае, вы можете импортировать что-либо в python, изменив системный путь:

import sys
sys.path.append("/path/to/directory")
from x import y
...