#python #python-3.x #import
Вопрос:
Я создаю программное обеспечение. Я организовал разный код в разных файлах python (модулях), организованных в разных папках.
Это действовало как заклинание. Тогда сегодня это больше не работает, так как у меня есть некоторые проблемы:
ModuleNotFoundError: No module named 'modules.mymodulesteam'
Вот как организован мой код:
MySoftware/ - start.py - modules/ -- mymodules.py -- prepare.py -- mymodulesteam.py
В start.py файл, у меня есть этот импорт:
from modules import prepare_envir_appium
в prepare.py У меня есть эта строка импорта
import modules.mymodulesteam as mymodules
Когда я исполню «start.py», У меня есть это сообщение об ошибке в консоли:
Traceback (most recent call last): File "E:MySoftwaremodulesprepare.py", import modules.mymodulesteam as mymodules ModuleNotFoundError: No module named 'modules.mymodulesteam'
поэтому я обратился за помощью и увидел, что мне нужно кое-что добавить _init.py файл в моей папке «модули». Я сделал это, и это не сработало. У меня точно такая же проблема.
Я прочитал каждый пост, касающийся такого рода проблем, и перепробовал многое.
from modules import mymodulesteam from . import mymodulesteam etc...
И я получаю такого рода ошибки:
Traceback (most recent call last): File "E:MySoftwaremodulesprepare.py", from modules import mymodulesteam as mymodules ImportError: cannot import name 'mymodulesteam' from 'modules' (E:MySoftwaremodules__init__.py)
Поэтому я удалил этот файл «_ init _.py» и проверил еще раз. На этот раз я получаю эту ошибку:
Traceback (most recent call last): File "E:MySoftwaremodulesprepare.py", from modules import mymodulesteam as mymodules ImportError: cannot import name 'mymodulesteam' from 'modules' (unknown location)
Раньше это работало очень хорошо. Я не знаю, что случилось. Кто-нибудь может мне помочь, пожалуйста?
Ответ №1:
Это не работает, потому что модули находятся по разным путям, и скрипт не знает, где искать.
Ваш текущий start.py
файл выглядит следующим образом,
from modules import prepare_envir_appium
Вместо этого сделайте это в верхней части вашего start.py
файла, потому что ваш prepare_envir_appium.py
файл находится в модулях.
import sys sys.path.insert(0,"../modules") import prepare_envir_appium
Теперь вы можете получить доступ к своим функциям с помощью prepare_envir_appium.functionname
.
Вы также можете сделать это,
import sys sys.path.insert(0,"../modules") import prepare_envir_appium as per
Теперь вы можете получить доступ к функциям, используемым per.functionname
в start.py.
Вы также можете импортировать определенные функции, подобные этой,
import sys sys.path.insert(0,"../modules") from prepare_envir_appium import functionname1, functionname2
и вы можете просто запускать их, используя их имена функций.
Однако, если вы просматриваете prepare.py
сценарий, поскольку модуль находится в той же папке, что и сценарий, все, что вам нужно сделать, это импортировать имя файла, как показано ниже, без расширения .py.
Вы можете следовать тем же соглашениям об именовании импорта, что и выше.
import mymodulesteam
или
import mymodulesteam as mmt
или
from mymodulesteam import function1, function2
Комментарии:
1. Спасибо, что попытались помочь. Это ничего не изменило.
2. Кроме того, «импорт mymodules» находится в prepare.py файл, который находится во вложенной папке «модули»
3. @GauthierButtez для скриптов в той же папке, что и модуль, все, что вам нужно сделать, это импортировать имя файла без .py
4. Если это не сработает, можете ли вы показать мне ошибку ? @GauthierButtez
5. Я получаю такую же ошибку «ModuleNotFoundError: нет модуля с именем «mymodulesteam»»