web-dev-qa-db-fra.com

PyInstaller ne fonctionne pas sur un simple programme HelloWorld

Je cours donc sur Windows 7 64 bits, et j'ai configuré Pyinstaller avec Pip et PyWin32. J'ai python 2.7.

J'ai fait un simple programme Hello World avec ce code

print "hello world!"

J'ai mis le fichier dans le même répertoire que PyInstaller et j'ai exécuté ce code dans l'invite de commande

pyinstaller.py helloWorld.py

Pourtant, quand j'essaye, je reçois ce message d'erreur:

Error loading Python DLL: C:\PROGRA~1\PYINST~1.1\build\HELLOW~1\python27.dll (error code 126)

Qu'est-ce que je fais mal et comment résoudre ce problème?

23
user1768884

Exécutez avec le drapeau -F pour produire l'exe autonome:

pyinstaller.py -F helloworld.py

c'est pyinstaller.exe -F helloworld.py

Il sortira vers dist/helloworld.exe

REMARQUE il s'agit d'un emplacement différent de lorsque -F n'est pas utilisé, assurez-vous d'exécuter le bon exe par la suite.

37
tul

Merci @tul! Ma version de pyinstaller l'a mis à dist \helloworld.exe cependant!

Si vous le démarrez à partir de C:\Python27\Scripts ... ce sera C:\Python27\Scripts\dist ... aussi!

Mais partout où vous l'avez, je vous recommande de mettre un fichier batch à côté de votre .py pour pouvoir recompiler à tout moment en un seul clic:

Je l'ai configuré pour qu'il n'y ait rien d'autre que le .exe à l'emplacement .py et les trucs temporaires vont dans le répertoire temp:

@echo off
:: get name from filename without path and ext
set name=%~n0
echo ========= %name% =========

:: cut away the suffix "_build"
set name=%name:~0,-6%
set pypath=C:\Python27\Scripts
set buildpath=%temp%

if not exist %name%.py (
    echo ERROR: "%name%.py" does not exist here!
    pause
    exit /b
)

%pypath%\pyinstaller.exe --onefile -y %~dp0%name%.py --distpath=%~dp0 --workpath=%buildpath% --specpath=%buildpath%

Je le nomme comme le fichier .py plus "_build" et coupe à nouveau le suffixe dans le script batch. Voilà.

3
ewerybody