py2exe nie generuje pliku wykonywalnego
Używam Pythona 2.6 NA XP. Właśnie zainstalowałem py2exe i mogę z powodzeniem utworzyć proste hello.exe z a hello.py. jednak, kiedy próbuję użyć py2exe w moim prawdziwym programie, py2exe generuje kilka wiadomości informacyjnych, ale nie generuje niczego w folderze dist.
Mój setup.py wygląda tak:
from distutils.core import setup
import py2exe
setup(console=['ServerManager.py'])
A wyjście py2exe wygląda tak:
python setup.py py2exe
running py2exe
creating C:\DevSource\Scripts\ServerManager\build
creating C:\DevSource\Scripts\ServerManager\build\bdist.win32
...
...
creating C:\DevSource\Scripts\ServerManager\dist
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'wx._misc_' (C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\_misc_.pyd -> wx._misc_.pyd)
creating python loader for extension 'lxml.etree' (C:\Python26\lib\site-packages\lxml\etree.pyd -> lxml.etree.pyd)
...
...
creating python loader for extension 'bz2' (C:\Python26\DLLs\bz2.pyd -> bz2.pyd)
*** finding dlls needed ***
Py2exe wydaje się znaleźć wszystkie moje import (choć byłem trochę zaskoczony, widząc win32 wymienione, jak nie importuję go wprost). Ponadto mój program uruchamia się całkiem szczęśliwie z tą komendą:
python ServerManager.py
Najwyraźniej robię coś zasadniczo złego, ale z powodu braku komunikatów o błędach z py2exe nie mam pojęcia co.
11 answers
I put this in all my setup.py Skrypty:
distutils.core.setup(
options = {
"py2exe": {
"dll_excludes": ["MSVCP90.dll"]
}
},
...
)
To utrzymuje py2exe cicho, ale nadal musisz się upewnić, że dll jest na komputerze użytkownika.
Odkryłem, że py2exe działa dobrze, jeśli skomentuję część mojego programu, która używa wxPython. Ponadto, gdy używam py2exe na 'prostej' próbce, która jest pobierana (np. w Python26\Lib \ site-packages \ py2exe \ samples \ simple), otrzymuję komunikat o błędzie:
*** finding dlls needed ***
error: MSVCP90.dll: No such file or directory
Coś o wxpythonie sprawia, że py2exe myśli, że potrzebuję biblioteki DLL Visual Studio 2008. Nie mam VS2008, a jednak mój program działa doskonale jako katalog modułów Pythona. Znalazłem kopię MSVCP90.DLL w sieci zainstalowano go w Python26 / DLLs, a py2exe teraz działa dobrze.
Nadal nie rozumiem skąd wzięła się ta zależność, ponieważ mogę uruchomić mój kod bez py2exe. Irytujące jest również to, że py2exe nie dał mi Komunikatu o błędzie, jak to miało miejsce w przypadku test_wx.py próbka.
Dalsza aktualizacja: kiedy próbowałem uruchomić wyjście py2exe na innym komputerze, odkryłem, że musi mieć MSVCR90.DLL zainstalowany; więc jeśli twój komputer docelowy nie ma Visual C++ 2008 już zainstalowany, polecam pobrać i zainstalować pakiet Redistributable Microsoft Visual C++ 2008 .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-18 21:26:52
WxPython nie ma z tym nic wspólnego. Przed Pythonem 2.6, Python używał Visual Studio 2003 jako kompilatora systemu Windows. Począwszy od wersji 2.6, przełączyli się na Visual Studio 2008, które wymaga pliku manifestu w niektórych sytuacjach. Zostało to dobrze udokumentowane. Zobacz następujące linki:
Http://wiki.wxpython.org/py2exe
Http://py2exe.org/index.cgi/Tutorial#Step52
Ponadto, jeśli tworzysz aplikację wxPython za pomocą py2exe, to chcesz ustawić parametr windows, a nie konsolowy. Może mój tutorial ci pomoże:
Http://www.blog.pythonlibrary.org/2010/07/31/a-py2exe-tutorial-build-a-binary-series/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-18 15:07:21
Wygląda na to, że jest to tylko zależność dla Pythona 2.6. Nie dostałem tego błędu pod 2.5, ale po aktualizacji jestem.
Ten wątek e-mail ma pewne tło, dlaczego problem istnieje i jak go naprawić:
http://www.nabble.com/py2exe,-Py26, - wxPython-and-dll-td20556399.html
Nie chciałem instalować vcredist. Moja aplikacja obecnie nie wymaga instalacji i może być uruchamiana przez osoby niebędące administratorami, co jest zachowaniem, którego nie chcę stracić. Więc Ja zgodnie z sugestiami w linkach i dostał niezbędne Microsoft. VC90. CRT. manifest i msvcr90.dll poprzez zainstalowanie Pythona "tylko dla tego użytkownika". Potrzebowałem również msvcp90.dll, który znalazłem w folderze WinSxS" wszyscy użytkownicy " Python 2.6 zainstalować. Ponieważ miałem już dwa z trzech, włączyłem msvcm90.dll, aby zapobiec przyszłym błędom, chociaż nie dostałem żadnych natychmiastowych błędów, gdy go pominąłem. Umieściłem manifest i trzy biblioteki DLL w folderze libs używanym przez moją zamrożoną aplikację.
The sztuczka, którą musiałem wykonać, polegała na dodaniu dodatkowej kopii manifestu i msvcr90.dll w katalogu głównym mojej aplikacji obok wygenerowanego przez py2exe pliku wykonywalnego. Ta kopia DLL jest używana do bootstrap aplikacji, ale wtedy wydaje się wyglądać tylko w folderze libs.
Miejmy nadzieję, że to odkrycie pomoże komuś innemu.
Miałem również ten sam problem z tym, że py2exe loguje prawdziwy komunikat o błędzie. Potem zdałem sobie sprawę, że stderr nie został przekierowany do mojego pliku dziennika. Dodaj ">build.log 2> & 1 " w wierszu poleceń, w którym wywołujesz py2exe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-15 06:23:53
import sys
sys.path.append('C:\\WINDOWS\\WinSxS\\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2')
W każdym systemie Windows Plik MSVCP90.dll
można znaleźć w podkatalogu C:\\WINDOWS\\WinSxS\\
W moim przypadku katalog był: x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2
.
Przejdź do C:\\WINDOWS\\WinSxS\\
i użyj Windows file search, aby znaleźć MSVCP90.dll
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-25 08:54:26
Tylko dla twojej informacji, dla mnie działało kopiowanie plików
Microsoft. VC90. CRT. manifest msvcr90dll
Do katalogu z .exe na komputerze użytkownika (który nie ma zainstalowanej redystrybucji Pythona lub VC).
Dzięki za wszystkie wskazówki tutaj!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-13 14:43:32
Wyjście mówi, że używasz WX. Spróbuj uruchomić py2exe ze skryptem określonym jako aplikacja GUI zamiast konsoli. Jeśli się nie mylę, to powoduje problemy z py2exe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 06:05:46
Spróbuj tego: http://www.py2exe.org/index.cgi/Tutorial#Step52
To działało dla mnie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-10 17:38:41
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-12 09:35:53
Na moim win8. 1 nie znajduję ścieżki
C:/Program pliki / Microsoft Visual Studio 9.0/VC/redist / x86 / Microsoft.Vc90.CRT
Przeciwnie, dll znajduje się w
C:/WINDOWS/WinSxS/x86_Microsoft.VC90.CRT_XXXXXXX
XXX mogą się różnić w zależności od komputera
Możesz szukać w ścieżce, a następnie dodać ścieżkę w sobie setup.py
import sys
sys.path.append('C:/WINDOWS/WinSxS/x86_Microsoft.VC90.CRT_XXXXXXX')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-21 21:20:54
import sys
sys.path.append('c:/Program Files/Microsoft Visual Studio 9.0/VC/redist/x86/Microsoft.VC90.CRT')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-10 17:51:14