#python #python-2.7 #python-import
#python #python-2.7 #python-импорт
Вопрос:
Я немного запутался в этом. Я не знаю, почему он не находит rpSubmit py. Это поведение не является особенным для этого single .py, а является общей проблемой. Я использую python2.7, и даже разные установки python сталкиваются с одной и той же проблемой.
Этот код взят из menu.py это вызывает ошибку импорта: Ошибка импорта: нет модуля с именем rpSubmit:
from scripts.rpSubmit import rpSubmit
Вот структура папок, и поскольку все __init__.py
необходимые существуют, верно?:
Verzeichnis: Z:ZMM0_pipelinepipelinenukemaster
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 17.03.2019 19:00 gizmos
d---- 18.03.2019 14:32 scripts
d---- 17.03.2019 19:00 ToolSets
-a--- 18.03.2019 14:35 656 init.py
-a--- 18.03.2019 14:32 740 menu.py
Verzeichnis: Z:ZMM0_pipelinepipelinenukemasterscripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 18.03.2019 14:32 rpSubmit
-a--- 18.03.2019 14:32 0 __init__.py
Verzeichnis: Z:ZMM0_pipelinepipelinenukemasterscriptsrpSubmit
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 10.03.2010 01:52 3620 rpSubmit.png
-a--- 18.01.2018 16:15 7591 rpSubmit.py
-a--- 18.03.2019 14:32 0 __init__.py
-a--- 18.03.2019 14:32 5638 rpSubmit.pyc
РЕДАКТИРОВАТЬ: После того, как я переименовал папку в script (без ов), она снова заработала. Я понятия не имею, почему. Счастливая случайность.
Комментарии:
1.
from scripts import rpSumbit
Работает?2. Нет, он возвращается с ImportError: не удается импортировать имя rpSubmit
3. Просто для двойной проверки: вы установили модуль? Вы пытаетесь импортировать, находясь в главной папке (в командной оболочке)?
4. Строка из scripts.rpSubmit import rpSubmit находится внутри menu.py который находится внутри главной папки. Устанавливать нечего, поскольку я хочу импортировать всего лишь файл .py. Может быть, package было бы лучшим словом вместо module?
5.хорошо, у меня были похожие ошибки, и я почти потерял его, пытаясь выяснить, что именно не так с моими импортами, теперь я даже не беспокоюсь, просто используйте этот шаблон, и все готово, просто скопируйте этот код поверх всех ваших импортов:
import os
current_dir =
os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parent_dir = os.path.dirname(current_dir)
sys.path.insert(0, parent_dir)
Скажите мне, устраняет ли это вашу проблему
Ответ №1:
Если вы запускаете программу из папки, которая не является ‘master’, Python, скорее всего, не находит rpSubmit, потому что он ищет папку ‘scripts’ в этой папке (где вы запустили программу), а не в папке ‘master’.
Чтобы исправить это, измените from scripts.rpSubmit import rpSubmit
строку в menu.py для:
import imp
rpSubmit = imp.load_source('rpSubmit', r'Z:ZMM0_pipelinepipelinenukemasterscriptsrpSubmitrpSubmit.py')
Таким образом, вы задаете абсолютный путь к нужному скрипту.