Почему pyinstaller не делает меня .exe-файлом? - PullRequest
2 голосов
/ 14 мая 2010

Я пытаюсь следовать этому руководству , чтобы превратить простой скрипт Hello World в файл .exe.

У меня Windows Vista с 64-битным процессором AMD
Я установил Python 2.6.5 (версия для Windows AMD64)
Я установил PATH (если это правильное слово), чтобы командная строка распознавала Python
Я установил UPX (кажется, что это только 32-разрядная версия для Windows) и вставил копию файла upx.exe в папку Python26 в соответствии с инструкциями.
Я установил Pywin (версия для Windows AMD 64 Python 2.6)
Я запустил Pyinstaller в Configure.py. Это дает некоторые сообщения об ошибках, но, кажется, завершить. Я не знаю, является ли это причиной проблемы, поэтому при запуске я говорю следующее:

C: \ Python26 \ Pyinstaller \ ветви \ py26win> Configure.py
Я: прочитал старую конфигурацию из C: \ Python26 \ Pyinstaller \ branch \ py26win \ config.dat
I: вычисление EXE_dependencies
Я: В поисках TCL / TK ...
I: Анализ C: \ Python26 \ DLLs_tkinter.pyd
W: Невозможно получить бинарные зависимости для файла:
W: C: \ Python26 \ DLLs_tkinter.pyd
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
вернуть _getImports_pe (pth) Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = датадирс [1] IndexError: индекс списка вне диапазона

I: Анализ C: \ Python26 \ DLLs_ctypes.pyd
W: Невозможно получить бинарные зависимости для файла:
W: C: \ Python26 \ DLLs_ctypes.pyd
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
return _getImports_pe (pth)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = datadirs [1]
IndexError: индекс списка вне диапазона

I: Анализ C: \ Python26 \ DLLs \ select.pyd
W: Невозможно получить двоичные зависимости для файла:
W: C: \ Python26 \ DLLs \ select.pyd
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
return _getImports_pe (pth)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = datadirs [1]
IndexError: индекс списка вне диапазона

I: Анализ C: \ Python26 \ DLLs \ unicodedata.pyd
W: Невозможно получить двоичные зависимости для файла:
W: C: \ Python26 \ DLLs \ unicodedata.pyd
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
return _getImports_pe (pth)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = датадирс [1]
IndexError: индекс списка вне диапазона

I: Анализ C: \ Python26 \ DLLs \ bz2.pyd
W: Невозможно получить двоичные зависимости для файла:
W: C: \ Python26 \ DLLs \ bz2.pyd
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
return _getImports_pe (pth)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = датадирс [1]
IndexError: индекс списка вне диапазона

I: Анализ C: \ Python26 \ python.exe
I: Зависимые сборки C: \ Python26 \ python.exe:
I: amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
I: Поиск сборки amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_ ни ...
I: Обнаружен манифест C: \ Windows \ WinSxS \ Manifests \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b.manifest
I: Поиск файла msvcr90.dll
I: Найден файл C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21 022.8_none_750b37ff97f4f68b \ msvcr90.dll
I: Поиск файла msvcp90.dll
I: Найден файл C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21 022.8_none_750b37ff97f4f68b \ msvcp90.dll
I: Поиск файла msvcm90.dll
I: Найден файл C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21 022.8_none_750b37ff97f4f68b \ msvcm90.dll
I: Добавление Microsoft.VC90.CRT \ Microsoft.VC90.CRT.manifest
I: Добавление Microsoft.VC90.CRT \ msvcr90.dll
I: Добавление Microsoft.VC90.CRT \ msvcp90.dll
I: Добавление Microsoft.VC90.CRT \ msvcm90.dll
W: Невозможно получить двоичные зависимости для файла:
W: C: \ Python26 \ python.exe
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
return _getImports_pe (pth)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = datadirs [1]
IndexError: индекс списка вне диапазона

I: Анализ C: \ Windows \ WinSxS \ Manifests \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e 3b_9.0.21022.8_none_750b37ff97f4f68b.manifest
I: Анализ C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.210 22.8_none_750b37ff97f4f68b \ msvcr90.dll
W: Невозможно получить двоичные зависимости для файла:
W: C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_ 750b37ff97f4f68b \ msvcr90.dll
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
return _getImports_pe (pth)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = datadirs [1]
IndexError: индекс списка вне диапазона

I: Анализ C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.210 22.8_none_750b37ff97f4f68b \ msvcp90.dll
W: Невозможно получить бинарные зависимости для файла:
W: C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_ 750b37ff97f4f68b \ msvcp90.dll
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
return _getImports_pe (pth)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = датадирс [1]
IndexError: список индексов вне диапазона

I: Анализ C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.210 22.8_none_750b37ff97f4f68b \ msvcm90.dll
W: Невозможно получить двоичные зависимости для файла:
W: C: \ Windows \ WinSxS \ amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_ 750b37ff97f4f68b \ msvcm90.dll
W: обратная связь (последний вызов был последним):
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 608, в get Импорт
return _getImports_pe (pth)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ bindepend.py", строка 275, в _ge tImports_pe
importva, importz = datadirs [1]
IndexError: индекс списка вне диапазона

Я: не могу найти TCL / TK
Я: тестирование на Zlib ...
Я: ... Злиб в наличии
I: Тестирование на способность устанавливать иконки, ресурсы версий ...
Я: ... доступно обновление ресурса
I: Тестирование на поддержку Unicode ...
Я: ... Юникод доступен
Я: тестирование на UPX ...
Я: ... UPX доступен
I: вычисление PYZ-зависимостей ...
Я: завершил генерацию C: \ Python26 \ Pyinstaller \ branch \ py26win \ config.dat

Мой скрипт на Python (с именем Hello.py) такой же, как в примере:

#!/usr/bin/env python 
for i in xrange(10000): 
print "Hello, World!"

Это мой BAT-файл в том же каталоге:

set PIP = C: \ Python26 \ Pyinstaller \ branch \ py26win \
python% PIP% Makespec.py --onefile --console --upx --tk Hello.py
python% PIP% Build.py Hello.spec

Когда я запускаю Hello.bat в командной строке, создается несколько файлов, ни один из которых не является файлом .exe, и отображается следующее:

C: \ Мои файлы> set PIP = C: \ Python26 \ Pyinstaller \ branch \ py26win \

C: \ Мои файлы> python C: \ Python26 \ Pyinstaller \ branch \ py26win \ Makespec.py --onefil e --console --upx --tk Hello.py написал C: \ Мои файлы \ Hello.spec теперь запустите Build.py, чтобы собрать исполняемый файл

C: \ Мои файлы> python C: \ Python26 \ Pyinstaller \ branch \ py26win \ Build.py Hello.spec

I: Зависимые сборки C: \ Python26 \ python.exe: I: amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none Traceback (последний вызов был последним): Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ Build.py", строка 1359, в main (args [0], configfilename = opts.configfile)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ Build.py", строка 1337, в основном строить (файл спецификация)
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ Build.py", строка 1297, в сборке ExecFile (спецификация)
Файл "Hello.spec", строка 3, в
pathex = ['C: \ My Files'])
Файл "C: \ Python26 \ Pyinstaller \ branch \ py26win \ Build.py", строка 292, в __init_ _
поднять ValueError, "скрипт '% s' не найден"% script
ValueError: скрипт 'C: \ Python26 \ Pyinstaller \ branch \ py26win \ support \ useTK.py' n не найдено

У меня ограниченные знания в командной строке, поэтому, пожалуйста, сделайте со мной шаги, если мне нужно что-то там сделать.

1 Ответ

6 голосов
/ 17 мая 2010

64-битный Python не поддерживается pyinstaller под Windows. Обычно при использовании 32-битного Python в 64-битной среде нет недостатка, поэтому самый простой вариант - установить и использовать его. Это также имеет дополнительное преимущество, заключающееся в том, что исполняемый файл, сгенерированный pyinstaller, будет работать как в 32-битной, так и в 64-битной Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...