Самый простой способ импортировать модули из родительской папки?

#python #python-3.x #import

#python #python-3.x #импорт

Вопрос:

У меня есть настройка моей папки как таковой.

 Desktop/project1/
  

Внутри project1 у меня есть main.py где у меня хранятся все мои функции, а также папка для каждого экземпляра. Итак, это выглядит так.

 Desktop/project1/main.py
Desktop/project1/user1/
Desktop/project1/user2/
  

и внутри пользовательских папок у меня есть:

 Desktop/project1/user1/user1.py
Desktop/project1/user2/user2.py
  

Мне нужно иметь возможность импортировать и использовать функции из main.py в каждом user.py папка внутри папки для этого пользователя. Есть идеи, как это сделать легко?

Я использую Pycharm, и когда я начинаю вводить это, он автоматически заполняет его для меня, как будто он может видеть оба main.py , а также функции внутри него, но затем, когда я запускаю программу, я получаю сообщение об ошибке.

 from main import function1

ModuleNotFoundError: No module named 'main'
  

Спасибо

Комментарии:

1. В этом случае достаточно изменить рабочий каталог на project1 .

2. @PeterWood Итак, когда я закрыл свой проект pycharm и открыл проект из папки user1 только с user1.py файл, теперь оператор импорта подчеркнут красным, и он не заполняет его автоматически, и он по-прежнему не работает.

3. Но это не то, что я сказал.

4. Nvm, я думаю, я понял это. Когда я вошел в редактирование конфигураций из pycharm и изменил рабочий каталог на этот, это сработало. Хотя я планирую запустить это user1.py файл из командной строки. Будет ли это по-прежнему работать, мне просто нужно будет вставить компакт-диск в эту папку перед ее запуском? Спасибо @PeterWood.

5. ДА. Но вы также можете использовать относительный импорт.

Ответ №1:

Вы можете просто добавить путь к каталогу sys.path , используя

 import sys
sys.path.append(r'pathtodir')
  

После этого вы можете нормально импортировать файл.
Вы можете получить путь к родительскому каталогу с помощью pathlib .

Ответ №2:

Попробуйте создать пустой файл __init__.py в каталоге вашего модуля. __init__ может обнаружить ваши пользовательские модули python