Итак, я уже некоторое время пишу эту игру и, наконец, она закончена. Однако из-за того, что игра предназначена для класса, и я использовал библиотеки, которые мой учитель не собирается устанавливать, мне нужно сделать один исполняемый файл, который будет работать независимо от python и игровых зависимостей. Я запустил py2exe, и он успешно завершился, однако, когда я запускаю exe, я получаю эту ошибку:
Traceback (most recent call last):
File "main.pyw", line 1, in <module>
File "zipextimporter.pyo", line 82, in load_module
File "libs\__init__.pyo", line 3, in <module>
WindowsError: [Error 3] The system cannot find the path specified: 'C:\\Users\\matt\\workspace\\COS125\\src\\dist\\includes.zip\\libs/*.*'
Я выяснил, какова наиболее вероятная причина ошибки. Скорее всего, это происходит из-за автоматического импортера, который я установил для каждого пакета. В файлах init .py для моих пакетов я использую следующий код, чтобы простой импорт из libs * импортировал все файлы из пакета lib. Это сделает так, что каждый файл будет загружен так, как если бы я загружал каждый файл как «из libs.module import *».
Код в файле init выглядит следующим образом:
import os, sys
path = os.path.dirname(__file__)
dirList = os.listdir(path)
for mod in dirList:
ext = os.path.splitext(mod)
mod = mod[:-len(ext[1])]
if (mod not in dir() and
mod != "__init__" and
mod != "" and
mod != "._"):
exec("from " + mod + " import *")
По сути, я спрашиваю, знает ли кто-нибудь еще, как это сделать, не приводя к этой ошибке после компиляции?