Mam pliczek cube.py który korzysta z pyopengla i setup.py:
setup(
version = "0.1",
description = "Wykresik 0.1",
name = "Wykresik",
windows = ["cube.py"]
)
Robię jak napisano na
http://pyopengl.sourceforge.net/documentation/py2exe.html
ADVAPI32.dll - C:\WINDOWS\System32\ADVAPI32.dll
USER32.dll - C:\WINDOWS\System32\USER32.dll
SHELL32.dll - C:\WINDOWS\System32\SHELL32.dll
KERNEL32.dll - C:\WINDOWS\System32\KERNEL32.dll
setup.py py2exe --excludes=OpenGL
running py2exe
*** searching for required modules ***
(...)
*** copy extensions ***
*** copy dlls ***
copying D:\Python25\lib\site-packages\py2exe\run_w.exe ->
D:\Python25\Lib\site-packages\py2exe\samples\Kopia simple\dist\cube.exe
The following modules appear to be missing
['OpenGL.GL', 'OpenGL.GLU', 'OpenGL.GLUT']
No i tworzy się exe który po odpaleniu nie działa a do loga wrzuca:
Traceback (most recent call last):
File "cube.py", line 6, in <module>
ImportError: No module named OpenGL.GLUT
Niby wygooglałem coś co powinno być rozwiązaniem
(http://mail.python.org/pipermail/python-list/2004-August/274079.html
http://mail.python.org/pipermail/python-list/2005-March/313812.html)
Ale i tak nie bardzo wiem co gdzie skopiować i jak ustawić patcha...
--
Adam "Prawda jest prosta - gdyby było inaczej
każdy głupiec mógłby ją zrozumieć".
> Zwykle używam pythona pod linuksem. Teraz przyszła potrzeba żeby zrobić
> ze skryptu exe i nie mogę sobie poradzić.
[...]
> setup.py py2exe --excludes=OpenGL
> running py2exe
> *** searching for required modules ***
> (...)
> *** copy extensions ***
> *** copy dlls ***
> copying D:\Python25\lib\site-packages\py2exe\run_w.exe ->
> D:\Python25\Lib\site-packages\py2exe\samples\Kopia simple\dist\cube.exe
> The following modules appear to be missing
> ['OpenGL.GL', 'OpenGL.GLU', 'OpenGL.GLUT']
>
> No i tworzy się exe który po odpaleniu nie działa a do loga wrzuca:
> Traceback (most recent call last):
> File "cube.py", line 6, in <module>
> ImportError: No module named OpenGL.GLUT
No właśnie, podałeś `--excludes' po to, aby ręcznie skopiować pakiet
OpenGL. Teoretycznie mógłbyś wrzucić wszystko z katalogu
$PYTHON/site-packages/OpenGL, ale w py2exesample [1] jest to już
przycięte do niezbędnego minimum (np. w py2exesample/dist/dots/OpneGL).
[1] http://sourceforge.net/project/showfiles.php?group_id=5988&package_id=113064
--
pozdrawiam
Rob
Rzeczony katalog OpenGL musisz oczywiście skopiować do katalogu,
w którym utworzony został plik exe.
--
pozdrawiam
Rob
>> No właśnie, podałeś `--excludes' po to, aby ręcznie skopiować pakiet
>> OpenGL. Teoretycznie mógłbyś wrzucić wszystko z katalogu
>> $PYTHON/site-packages/OpenGL, ale w py2exesample [1] jest to już
>> przycięte do niezbędnego minimum (np. w py2exesample/dist/dots/OpneGL).
> Rzeczony katalog OpenGL musisz oczywiście skopiować do katalogu,
> w którym utworzony został plik exe.
OK, robię tak:
setup.py py2exe --excludes=OpenGL
Z py2exesample\dist\dots kopiuję katalog OpenGL do stworzonego przed
chwilą katalogu dist.
Odpalam exe ale niestedy dalej nie działa w logu to samo co wklejałem
wyżej.
Czegoś nie zrozumiałem?
>> No właśnie, podałeś `--excludes' po to, aby ręcznie skopiować pakiet
>> OpenGL. Teoretycznie mógłbyś wrzucić wszystko z katalogu
>> $PYTHON/site-packages/OpenGL, ale w py2exesample [1] jest to już
>> przycięte do niezbędnego minimum (np. w py2exesample/dist/dots/OpneGL).
> Rzeczony katalog OpenGL musisz oczywiście skopiować do katalogu,
> w którym utworzony został plik exe.
OK, robię tak:
setup.py py2exe --excludes=OpenGL
Z py2exesample\dist\dots kopiuję katalog OpenGL do stworzonego przed
chwilą katalogu dist.
Odpalam exe ale niestety dalej nie działa. W logu to samo co wklejałem
wyżej.
Czegoś nie zrozumiałem?
--
Pozdrawiam
Amadeusz 'alfanick' Jasak
>> Czegoś nie zrozumiałem?
> To może wywal --excludes=OpenGL??
Jeśli dam bez --excludes=OpenGL to przy setup.py py2exe wywala:
The following modules appear to be missing
['pkg_resources']
Stworzony exek nie działa a w logu krzyczy:
Traceback (most recent call last):
File "cube.py", line 6, in <module>
File "OpenGL\GLUT\__init__.pyc", line 2, in <module>
File "OpenGL\raw\GLUT\__init__.pyc", line 6, in <module>
File "OpenGL\raw\GLUT\constants.pyc", line 7, in <module>
File "OpenGL\arrays\__init__.pyc", line 19, in <module>
File "OpenGL\arrays\arraydatatype.pyc", line 5, in <module>
File "OpenGL\arrays\formathandler.pyc", line 8, in <module>
ImportError: No module named pkg_resources
> Dnia 21.01.2007 Rob Wolfe <r...@smsnet.pl> napisał/a:
>
>>> No właśnie, podałeś `--excludes' po to, aby ręcznie skopiować pakiet
>>> OpenGL. Teoretycznie mógłbyś wrzucić wszystko z katalogu
>>> $PYTHON/site-packages/OpenGL, ale w py2exesample [1] jest to już
>>> przycięte do niezbędnego minimum (np. w py2exesample/dist/dots/OpneGL).
>> Rzeczony katalog OpenGL musisz oczywiście skopiować do katalogu,
>> w którym utworzony został plik exe.
>
> OK, robię tak:
> setup.py py2exe --excludes=OpenGL
> Z py2exesample\dist\dots kopiuję katalog OpenGL do stworzonego przed
> chwilą katalogu dist.
>
> Odpalam exe ale niestety dalej nie działa. W logu to samo co wklejałem
> wyżej.
>
> Czegoś nie zrozumiałem?
W takim razie pokaż zawartość katalogu `dist'.
Jeśli masz tam plik exe i katalog OpenGL, to musi działać.
Próbowałeś uruchomić exe'ki z py2exesample? Też nie działają?
--
pozdrawiam
Rob
Exeki z py2exesample działają. Próbowałem tam wrzucić swojego exeka ale
nie działał. Później się zorientowałem że py2exesample nie jest na
pythonie 2.5 a takiego używam. Dlatego wrzuciłem do swojego dist katalog
OpenGL z \Python25\Lib\site-packages\PyOpenGL-3.0.0a5-py2.5.egg\
Exek przy uruchamianiu wywalał:
Traceback (most recent call last):
File "cube.py", line 6, in <module>
ImportError: No module named OpenGL.GLUT
Dla pewności wrzuciłem mu tam też glut32.dll z windows/system ale nie
pomogło.
Zawartość katalogu dist:
2007-01-21 21:04 <DIR> .
2007-01-21 21:04 <DIR> ..
2007-01-21 23:04 <DIR> OpenGL
2001-11-08 10:27 237 568 glut32.dll
2006-09-19 09:52 77 824 bz2.pyd
2006-09-19 09:52 475 136 unicodedata.pyd
2006-09-19 09:52 2 109 440 python25.dll
2006-09-19 09:52 4 608 w9xpopen.exe
2003-02-21 04:42 348 160 MSVCR71.dll
2007-01-21 23:20 707 607 library.zip
2007-01-21 23:20 23 552 cube.exe
2007-01-21 23:21 117 cube.exe.log
9 plik(ów) 3 984 012 bajtów
3 katalog(ów) 10 636 918 784 bajtów wolnych
Ach... czyli instalowałeś przy pomocy setuptools. To trochę inna
zabawa.
Skopiuj cały katalog `PyOpenGL-3.0.0a5-py2.5.egg' do swojego `dist',
wejdź do katalogu `dist' i ustaw ścieżkę tak:
set PYTHONPATH=PyOpenGL-3.0.0a5-py2.5.egg
odpal interpreter Pythona i spróbuj:
import OpenGL.GLUT
jeśli to zadziała, to potem odpal exe'ka.
--
pozdrawiam
Rob
> Ach... czyli instalowałeś przy pomocy setuptools. To trochę inna
> zabawa.
>
> Skopiuj cały katalog `PyOpenGL-3.0.0a5-py2.5.egg' do swojego `dist',
> wejdź do katalogu `dist' i ustaw ścieżkę tak:
> set PYTHONPATH=PyOpenGL-3.0.0a5-py2.5.egg
>
> odpal interpreter Pythona i spróbuj:
> import OpenGL.GLUT
>
> jeśli to zadziała, to potem odpal exe'ka.
Dobra jeszcze raz wszystko po koleji, może naprowadzi Cię na to co jest
nie tak. Bo ja nie mam pojęcia.
D:\Python25\Lib\site-packages\py2exe\samples\Kopiasimple> dir
(...)
2007-01-21 15:31 1 037 setup.py
2007-01-21 14:35 7 846 cube.py
D:\(...)> setup.py py2exe --excludes=OpenGL
running py2exe
(...)
The following modules appear to be missing
['OpenGL.GL', 'OpenGL.GLU', 'OpenGL.GLUT']
(...)
D:\(...)> cd dist
Kopiuję D:\Python25\Lib\site-packages\PyOpenGL-3.0.0a5-py2.5.egg do
stworzonego katalogu dist.
D:\(...)> set PYTHONPATH=PyOpenGL-3.0.0a5-py2.5.egg
D:\(...)>d:\Python25\python.exe
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenGL.GLUT
>>> ^Z
D:\(...)>cube.exe
Exe nie działa będy w logu:
Traceback (most recent call last):
File "cube.py", line 6, in <module>
ImportError: No module named OpenGL.GLUT
Dzięki wielke za chęć pomocy i cierpliwość.
> D:\(...)>cube.exe
>
> Exe nie działa będy w logu:
> Traceback (most recent call last):
> File "cube.py", line 6, in <module>
> ImportError: No module named OpenGL.GLUT
Chyba sobie w końcu przypomniałem. Wszystkie moduły i pakiety
jakie exe'ki py2exe potrzebują siedzą w `library.zip' w katalog
`dist'.
Czyli katalog `OpenGL' musi się znaleźć wewnątrz `library.zip'.
--
pozdrawiam
Rob
> Chyba sobie w końcu przypomniałem. Wszystkie moduły i pakiety
> jakie exe'ki py2exe potrzebują siedzą w `library.zip' w katalog
> `dist'.
> Czyli katalog `OpenGL' musi się znaleźć wewnątrz `library.zip'.
Dorzuciłem mu ten katalog do zipa i teraz rzuca wyjątkiem:
Traceback (most recent call last):
File "cube.py", line 6, in <module>
File
"d:\python25\lib\site-packages\PyOpenGL-3.0.0a5-py2.5.egg\OpenGL\GLUT\__init__.py",
line 2, in <module>
from OpenGL.raw.GLUT import *
File
"d:\python25\lib\site-packages\PyOpenGL-3.0.0a5-py2.5.egg\OpenGL\raw\GLUT\__init__.py",
line 6, in <module>
from OpenGL.raw.GLUT.constants import *
File
"d:\python25\lib\site-packages\PyOpenGL-3.0.0a5-py2.5.egg\OpenGL\raw\GLUT\constants.py",
line 6, in <module>
from ctypes import *
ImportError: No module named ctypes
W ogóle nie rozumiem dlaczego takie ścieżki podaje skoro korzysta z tego
co w zipie...
> Dnia 22.01.2007 Rob Wolfe <r...@smsnet.pl> napisał/a:
>
>> Chyba sobie w końcu przypomniałem. Wszystkie moduły i pakiety
>> jakie exe'ki py2exe potrzebują siedzą w `library.zip' w katalog
>> `dist'.
>> Czyli katalog `OpenGL' musi się znaleźć wewnątrz `library.zip'.
>
> Dorzuciłem mu ten katalog do zipa i teraz rzuca wyjątkiem:
No dobra, problem mnie zaintrygował, to trochę pogrzebałem
i mam dwie wiadomości: dobrą i złą. :)
Dobra to taka, że udało mi się utworzyć tego exe'ka,
a zła, że tylko na Pythonie 2.4 i PyOpenGL 2.0.2.
Wykonałem takie kroki:
1. edycja cube.py
Trzeba dodać ścieżkę do modułu OpenGL ręcznie,
czyli na początku pliku dodajemy:
import sys
sys.path.append(".")
print sys.path # opcjonalnie do testow
2. python setup.py py2exe --excludes=OpenGL
3. cd dist
4. skopiowanie katalogu OpenGL do katalogu dist
Niestety dodanie katalogu OpenGL do library.zip, to nie był
najlepszy pomysł, ponieważ z zip'a nie mogą być importowane
moduły dynamiczne PYD. Dlatego teraz skopiowaliśmy OpenGL
i dodaliśmy ścieżkę do bieżącego katalogu w cube.py
5. odpalenie cube.exe
>
> Traceback (most recent call last):
> File "cube.py", line 6, in <module>
[...]
> "d:\python25\lib\site-packages\PyOpenGL-3.0.0a5-py2.5.egg\OpenGL\raw\GLUT\constants.py",
> line 6, in <module>
> from ctypes import *
> ImportError: No module named ctypes
A zadziałał Ci w ogóle sam skrypt cube.py odpalony bezpośrednio?
U mnie dla wersji PyOpenGL 3.0.0a5 wychodziły właśnie jakieś problemy
z zależnościami.
>
> W ogóle nie rozumiem dlaczego takie ścieżki podaje skoro korzysta z tego
> co w zipie...
Coś tu pokręciłeś, exe nie szuka po PYTHONPATH, może odpaliłeś cube.py?
--
pozdrawiam
Rob
>>> Chyba sobie w końcu przypomniałem. Wszystkie moduły i pakiety
>>> jakie exe'ki py2exe potrzebują siedzą w `library.zip' w katalog
>>> `dist'.
>>> Czyli katalog `OpenGL' musi się znaleźć wewnątrz `library.zip'.
>> Dorzuciłem mu ten katalog do zipa i teraz rzuca wyjątkiem:
> No dobra, problem mnie zaintrygował, to trochę pogrzebałem
> i mam dwie wiadomości: dobrą i złą. :)
> Dobra to taka, że udało mi się utworzyć tego exe'ka,
> a zła, że tylko na Pythonie 2.4 i PyOpenGL 2.0.2.
W shakowałem problem sprzętowo - załatwiłem laptopa z linuksem ;-)
Szkoda że jednak wcale nie tak prosto jest robić pythonowe exeki to
pewnie wpływa negatywnie na popularność języka.
PS Jeszcze raz wielkie dzięki za czas poświęcony.
>>> Chyba sobie w końcu przypomniałem. Wszystkie moduły i pakiety
>>> jakie exe'ki py2exe potrzebują siedzą w `library.zip' w katalog
>>> `dist'.
>>> Czyli katalog `OpenGL' musi się znaleźć wewnątrz `library.zip'.
>> Dorzuciłem mu ten katalog do zipa i teraz rzuca wyjątkiem:
> No dobra, problem mnie zaintrygował, to trochę pogrzebałem
> i mam dwie wiadomości: dobrą i złą. :)
> Dobra to taka, że udało mi się utworzyć tego exe'ka,
> a zła, że tylko na Pythonie 2.4 i PyOpenGL 2.0.2.
Shakowałem problem sprzętowo - załatwiłem laptopa z linuksem ;-)
Szkoda że jednak wcale nie tak prosto jest robić pythonowe exeki to
pewnie wpływa negatywnie na popularność języka.
PS Jeszcze raz wielkie dzięki za czas poświęcony.