Мне кажется, что этот вопрос нуждается в лучшем названии, и я исправлю его, если кто-то предложит что-то лучшее.Проблема в том, что я не уверен в терминологии функции, которую я использую здесь.
Лучший способ описать мою проблему - показать, что я сделал.Проект находится здесь: https://github.com/jeffnyman/quendor
Этот проект настроен таким образом, что его можно выполнить как модуль.Например, из корня проекта кто-то может сделать это:
python3 -m quendor
У меня также есть скрипт сборки для создания почтового индекса в памяти (если я правильно использую эту терминологию):
https://github.com/jeffnyman/quendor/blob/master/build.py
Это работает в том случае, если вы запустите build.py
, он сгенерирует файл quendor.py
, который выполняет весь проект.Это работало нормально до тех пор, пока я не включил другие каталоги (например, мои utilities
и zinterface
).
С проектом, который сейчас находится в репо, если вы запустите сборку(.\build.py
) и затем запустите сгенерированный файл:
./quendor.py
Вы получите следующую ошибку:
File "./quendor.py/quendor/__main__.py", line 6, in <module>
ModuleNotFoundError: No module named 'quendor.zinterface'
Итак, ключевой момент: , если все мои файлыв том же каталоге (т. е. в quendor
) этот сценарий сборки отлично работает с точки зрения создания исполняемого файла сценария.
Но как только я включаю подкаталоги и файлы в эти каталоги, дела идут на югна меня с вышеуказанной ошибкой.
Я уверен, что все файлы собираются.Я обрабатываю это, начиная со строки 18 (https://github.com/jeffnyman/quendor/blob/master/build.py#L18). И если бы вы добавили в строку 24 это утверждение:
print(f"* {file_path}")
Вы бы увидели, что оно выдает следующее:
* quendor/__init__.py
* quendor/__version__.py
* quendor/zinterface/fileio.py
* quendor/utilities/messages.py
* quendor/__main__.py
Так что я подозреваю, что это может быть связано с кодом, в котором я пишу строку в строке 28 (https://github.com/jeffnyman/quendor/blob/master/build.py#L28). Я чувствую, что должен сделать больше, чтобы сообщить исполняемому файлу с zip-скриптом о модулях.
Но я не уверен, если (1) я точен и (2) даже если я точен, если это возможно. Я обнаружил, что я немного над головой здесь.
Будем благодарны за любые мысли, и я с удовольствием дополню их любыми разъяснениями или терминологией.