#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