Я написал довольно простую программу с графическим интерфейсом для автоматизации нескольких процессов для пользователей Windows в Python (так как это единственный язык программирования, с которым я немного знаком, он будет работать в Windows). В идеале я бы не хотел, чтобы пользователь запускал программу установки на своем компьютере, поскольку я планирую запускать автономную программу на USB-накопителе.
Это зависит от os, shutil, string, sys, tkinter, webbrowser, PIL, ftplib и glob.
Кажется, что все зависимости были импортированы, когда я запустил cx_freeze, кроме PIL. Я никогда раньше не использовал cx_freeze, так что я могу сделать что-то не так, но это не так. Запуск программы из незамерзающего скрипта .py работает просто отлично.
Вот сообщение об ошибке, которое я получаю при попытке использовать команду PIL:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
return self.func(*args)
File "E:\AlbumUploader.py", line 143, in OnButton2Click
img.thumbnail(size, Image.ANTIALIAS)
File "C:\Python32\lib\site-packages\PIL\Image.py", line 1573, in thumbnail
self.load()
File "C:\Python32\lib\site-packages\PIL\ImageFile.py", line 168, in load
self.load_prepare()
File "C:\Python32\lib\site-packages\PIL\ImageFile.py", line 234, in load_prepare
self.im = Image.core.new(self.mode, self.size)
File "C:\Python32\lib\site-packages\PIL\Image.py", line 39, in __getattr__
raise ImportError("The _imaging C module is not installed")
ImportError: The _imaging C module is not installed
Спасибо за любую помощь, которую вы можете предоставить. Я вижу, что он все еще ссылается на C: \ Python32, что может быть частью проблемы, потому что это не должно быть (если я не ошибаюсь).
Обновление:
Я посмотрел FAQ по PIL, и похоже, что суть этого ответа в том, что мне нужно убедиться, что мой список sys.path правильный. Я в основном собрал все файлы Python для Windows и включил его в USB-накопитель, который я пытаюсь использовать, чтобы вместить все, и установил свой путь так:
program_dir = os.path.split(sys.argv[0])[0]
sys.path = [program_dir]
sys.path.append(program_dir + os.sep + 'Lib')
sys.path.append(program_dir + os.sep + 'Lib' + os.sep + 'site-packages')
sys.path.append(program_dir + os.sep + 'Lib' + os.sep + 'site-packages' + os.sep + 'PIL')
sys.path.append(program_dir + os.sep + 'DLLs')
Все пути кажутся правильными, но по какой-то причине я все еще получаю ту же ошибку. Когда я запускаю файл .py, все работает на 100%, но, похоже, это как-то ломается. Другие модули работают нормально, например, shutil, os и sys.