Python не может найти модуль с именем / Ошибка импорта из двухуровневого subdir - PullRequest
0 голосов
/ 18 марта 2019

Я немного запутался по этому поводу.Я не знаю, почему он не находит pyr rpSubmit.Такое поведение не является особенным для этого .py, но является общей проблемой.Я использую Python2.7, и даже разные установки Python сталкиваются с той же проблемой.

Этот код из menu.py, который вызывает ошибку импорта: Ошибка импорта: нет модуля с именем rpSubmit:

from scripts.rpSubmit import rpSubmit

Вот структура папок, и поскольку все необходимые __init__.py существуют, верно?:

    Verzeichnis: Z:\ZMM\00_pipeline\pipeline\nuke\master


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:\ZMM\00_pipeline\pipeline\nuke\master\scripts


Mode                LastWriteTime     Length Name                                                                      
----                -------------     ------ ----                                                                      
d----        18.03.2019     14:32            rpSubmit                                                                  
-a---        18.03.2019     14:32          0 __init__.py                                                                                                                         


    Verzeichnis: Z:\ZMM\00_pipeline\pipeline\nuke\master\scripts\rpSubmit


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    

РЕДАКТИРОВАТЬ: После того, как я переименовал папку в скрипт (без s), он снова заработал.Понятия не имею почему.Счастливая случайность.

1 Ответ

0 голосов
/ 18 марта 2019

Если вы запускаете программу из папки, которая не является «master», Python, скорее всего, не найдет rpSubmit, потому что он ищет папку «scripts» в этой папке (где вы запустили программу), а не в папка 'master'.

Чтобы исправить это, измените строку from scripts.rpSubmit import rpSubmit в menu.py на:

import imp
rpSubmit = imp.load_source('rpSubmit', r'Z:\ZMM\00_pipeline\pipeline\nuke\master\scripts\rpSubmit\rpSubmit.py')

Таким образом, вы устанавливаете абсолютный путь к нужному сценарию.

...