26

Импорт файлов из другой папки

11

У меня есть следующая структура папок:

application
├── app
│   └── folder
│       └── file.py
└── app2
    └── some_folder
        └── some_file.py

Как я могу импортировать функцию из file.py внутри some_file.py? Я пробовал следующий код:

from application.app.folder.file import func_name

Но это не работает.

5 ответ(ов)

13

В данном случае нет ничего неправильного в следующем импорте:

from application.app.folder.file import func_name

Просто убедитесь, что в папке folder также имеется файл __init__.py. Это позволяет папке рассматриваться как пакет. Я не совсем понимаю, почему в других ответах упоминается PYTHONPATH.

2

В ситуации, когда модули находятся в параллельных директориях, как в вашем примере:

application/app2/some_folder/some_file.py
application/app2/another_folder/another_file.py

можно сделать один модуль доступным для другого, добавив родительскую директорию в путь поиска модулей. Для этого вы можете использовать следующий код:

import sys
sys.path.append('../')

После добавления ../ в sys.path, Python будет искать модули в родительской директории (application/app2), что позволит вам импортировать необходимые модули из других папок. Убедитесь, что добавление пути происходит до импорта необходимых модулей, чтобы избежать ошибок.

1

Чтобы импортировать модуль из подпапки в Python, выполните следующие шаги:

Первый шаг: Импортируйте модуль sys в вашем файле name-file.py:

import sys

Второй шаг: Добавьте путь к папке в вашем name-file.py. Это позволит Python знать, где искать ваш пакет:

sys.path.insert(0, '/the/folder/path/name-package/')

Третий шаг: Создайте пустой файл __init__.py в вашей подпапке. Этот файл сигнализирует Python о том, что данная папка является пакетом:

- name-file.py
- name-package/
    - __init__.py
    - name-module.py

Четвертый шаг: Импортируйте модуль из папки в name-file.py:

from name-package import name-module

Следуя этим шагам, вы сможете успешно импортировать нужный модуль из подпакета.

0

Проблема заключается в том, что Python ищет файл в неверном каталоге. Чтобы решить эту проблему, попробуйте использовать относительный импорт. Измените строку

from application.app.folder.file import func_name

на:

from .application.app.folder.file import func_name

Добавление точки указывает Python искать папку application в текущем каталоге, а не в каталоге установки Python.

0

Чтобы вызвать функцию myfunc из файла myfile.py, который находится в папке myfolder, из main.py, используйте следующий синтаксис:

  1. Убедитесь, что структура папок выглядит следующим образом:
├── main.py
└── myfolder
    └── myfile.py
  1. В myfile.py определите функцию:
def myfunc():
    print('hello')
  1. В main.py импортируйте функцию myfunc и вызовите её:
from myfolder.myfile import myfunc

myfunc()

При запуске main.py вы должны увидеть вывод: hello.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь