Thread View: pl.comp.lang.python
5 messages
5 total messages
Started by Parasit
Fri, 31 Aug 2012 07:11
Py2exe i Beatifullsoup
Author: Parasit
Date: Fri, 31 Aug 2012 07:11
Date: Fri, 31 Aug 2012 07:11
28 lines
2256 bytes
2256 bytes
Witam,
Napisałem prosty skrypcik który pobiera różne rzeczy z sieci, głównie po http.
Znajomy poprosił mnie żebym mu go udostępnił, problem polegał na tym że nie ma i nie chce mieć zainstalowanego całego pythona. Pomyślałem że po prostu zrobię mu wersję exe, jak już z resztą kilka razy robiliśmy.
Zrobiłem prosty setup
setup(console=['StripSucker.py'])
i przy próbie wygenerowania exe dostałem:
The following modules appear to be missing
['BeautifulSoup', 'mechanize']
Przy próbie uruchomienia dostałem standardowy błąd:
Traceback (most recent call last):
File "StripSucker.py", line 5, in <module>
ImportError: No module named mechanize
Zmieniłem setup wg. instrukcji:
setup(windows=[{"script" : "StripSucker.py"}], options={"py2exe":{"includes":["BeautifulSoup", "mechanize"]}})
Różnica jest taka że wywala się już przy próbie wygenerowania exe:
raise ImportError, "No module named " + qname
ImportError: No module named BeautifulSoup
Jak to obejść??? Przypominam że mam te biblioteki i skrypt odpalany lokalnie działa prawidłowo.
Pozdrawiam
Parasit
Re: Py2exe i Beatifullsoup
Author: Rob Wolfe
Date: Fri, 31 Aug 2012 20:26
Date: Fri, 31 Aug 2012 20:26
43 lines
2561 bytes
2561 bytes
Parasit <bartosz.bubak@gmail.com> writes:
> Witam,
> Napisałem prosty skrypcik który pobiera różne rzeczy z sieci, głównie po http.
> Znajomy poprosił mnie żebym mu go udostępnił, problem polegał na tym
> że nie ma i nie chce mieć zainstalowanego całego pythona.
> Pomyślałem że po prostu zrobię mu wersję exe, jak już z resztą kilka razy robiliśmy.
> Zrobiłem prosty setup
>
> setup(console=['StripSucker.py'])
>
> i przy próbie wygenerowania exe dostałem:
>
> The following modules appear to be missing
> ['BeautifulSoup', 'mechanize']
>
> Przy próbie uruchomienia dostałem standardowy błąd:
> Traceback (most recent call last):
> File "StripSucker.py", line 5, in <module>
> ImportError: No module named mechanize
>
> Zmieniłem setup wg. instrukcji:
> setup(windows=[{"script" : "StripSucker.py"}], options={"py2exe":{"includes":["BeautifulSoup", "mechanize"]}})
>
> Różnica jest taka że wywala się już przy próbie wygenerowania exe:
> raise ImportError, "No module named " + qname
> ImportError: No module named BeautifulSoup
>
> Jak to obejść??? Przypominam że mam te biblioteki i skrypt odpalany lokalnie działa prawidłowo.
Zapodaj:
python -v -c "import BeautifulSoup"
i w listingu zobacz skąd tak naprawdę ten moduł jest importowany.
U mnie to jest np.:
$ python -v -c "import BeautifulSoup" 2>&1 | grep -i beautiful
# /usr/lib/pymodules/python2.6/BeautifulSoup.pyc matches /usr/lib/pymodules/python2.6/BeautifulSoup.py
import BeautifulSoup # precompiled from /usr/lib/pymodules/python2.6/BeautifulSoup.pyc
Być może zaciągany jest z lokalizacji, której py2exe nie widzi.
Dla pewności wrzuć go do %PYTHON_HOME%\lib\site-packages
i dodaj "import BeautifulSoup" do setup.py.
RW
Re: Py2exe i Beatifullsoup
Author: krystian.rosinski
Date: Sat, 01 Sep 2012 07:40
Date: Sat, 01 Sep 2012 07:40
72 lines
3269 bytes
3269 bytes
W dniu piątek, 31 sierpnia 2012 09:11:18 UTC+2 użytkownik Parasit napisał:
> Witam,
>
> Napisałem prosty skrypcik który pobiera różne rzeczy z sieci, głównie po http.
>
> Znajomy poprosił mnie żebym mu go udostępnił, problem polegał na tym że nie ma i nie chce mieć zainstalowanego całego pythona. Pomyślałem że po prostu zrobię mu wersję exe, jak już z resztą kilka razy robiliśmy.
>
> Zrobiłem prosty setup
>
>
>
> setup(console=['StripSucker.py'])
>
>
>
> i przy próbie wygenerowania exe dostałem:
>
>
>
> The following modules appear to be missing
>
> ['BeautifulSoup', 'mechanize']
>
>
>
> Przy próbie uruchomienia dostałem standardowy błąd:
>
> Traceback (most recent call last):
>
> File "StripSucker.py", line 5, in <module>
>
> ImportError: No module named mechanize
>
>
>
> Zmieniłem setup wg. instrukcji:
>
> setup(windows=[{"script" : "StripSucker.py"}], options={"py2exe":{"includes":["BeautifulSoup", "mechanize"]}})
>
>
>
> Różnica jest taka że wywala się już przy próbie wygenerowania exe:
>
> raise ImportError, "No module named " + qname
>
> ImportError: No module named BeautifulSoup
>
>
>
> Jak to obejść??? Przypominam że mam te biblioteki i skrypt odpalany lokalnie działa prawidłowo.
>
>
>
> Pozdrawiam
>
> Parasit
Witam,
Której wersji BeautifulSoup używasz? 3 czy 4? W jaki sposób została zainstalowana?
BeautifulSoup 3 to pojedynczy moduł .py, który można zaimportować przy pomocy:
from BeautifulSoup import BeautifulSoup
W przypadku wersji 4 jest to pakiet o nazwie bs4:
from bs4 import BeautifulSoup
Może tu gdzieś leży przyczyna. http://www.crummy.com/software/BeautifulSoup/bs4/doc/#porting-code-to-bs4
W obu przypadkach importowany moduł powinien zostać dodany automatycznie do exe. Zachęcam do sprawdzenia cx_freeze. Zasada działania podobna do py2exe, ale jest aktywnie rozwijany (jest już nawet wersja dla Pythona 3.3).
Re: Py2exe i Beatifullsoup
Author: Parasit
Date: Sun, 02 Sep 2012 21:57
Date: Sun, 02 Sep 2012 21:57
12 lines
1822 bytes
1822 bytes
W dniu sobota, 1 września 2012 09:40:38 UTC+2 użytkownik krystian...@gmail.com napisał: > Której wersji BeautifulSoup używasz? 3 czy 4? W jaki sposób została zainstalowana? import BeautifulSoup # loaded from Zip c:\Python27\lib\site-packages\beautifulso up-3.2.1-py2.7.egg\BeautifulSoup.pyc Używałem jak zwykle "easy_install". > W obu przypadkach importowany moduł powinien zostać dodany automatycznie do exe. Zachęcam do sprawdzenia cx_freeze. Zasada działania podobna do py2exe, ale jest aktywnie rozwijany (jest już nawet wersja dla Pythona 3.3). Ten sam problem jest z mechanize, spróbuję się zaprzyjaźnić z cx_freeze, dla mnie żadna różnica i tak 99% swoich zabawek używam na linuxie.
Re: Py2exe i Beatifullsoup
Author: Parasit
Date: Sun, 02 Sep 2012 22:37
Date: Sun, 02 Sep 2012 22:37
41 lines
3377 bytes
3377 bytes
W dniu sobota, 1 września 2012 09:40:38 UTC+2 użytkownik krystian...@gmail.com napisał:
> W obu przypadkach importowany moduł powinien zostać dodany automatycznie do exe. Zachęcam do sprawdzenia cx_freeze. Zasada działania podobna do py2exe, ale jest aktywnie rozwijany (jest już nawet wersja dla Pythona 3.3).
Update.
Użyłem cx_freeze, efekt ten sam, tyle że czepia się mechanize zamiast BeautifulSoup.
[code]
c:\poligon\StripSucker> cxfreeze StripSucker.py --target-dir dist --include-modules BeautifulSoup,mechanize
Traceback (most recent call last):
File "C:\Python27\Scripts\cxfreeze", line 5, in <module>
main()
File "C:\Python27\lib\site-packages\cx_Freeze\main.py", line 188, in main
freezer.Freeze()
File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 520, in Freeze self._FreezeExecutable(executable)
File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 134, in _Freez
eExecutable
finder = self._GetModuleFinder(exe)
File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 302, in _GetModuleFinder
finder.IncludeModule(name)
File "C:\Python27\lib\site-packages\cx_Freeze\finder.py", line 523, in Include
Module namespace = namespace)
File "C:\Python27\lib\site-packages\cx_Freeze\finder.py", line 271, in _Import
Module
raise ImportError("No module named %r" % name)
ImportError: No module named 'mechanize'
c:\poligon\StripSucker> easy_install mechanize
Searching for mechanize
Best match: mechanize 0.2.5
Processing mechanize-0.2.5-py2.7.egg
mechanize 0.2.5 is already the active version in easy-install.pth
Using c:\python27\lib\site-packages\mechanize-0.2.5-py2.7.egg
Processing dependencies for mechanize
Finished processing dependencies for mechanize
[/code]
Próby użycia setup.py kończą się dokładnie tak samo, albo dodam mechanize do "include" i dostaje zamiast exe:
ImportError: No module named 'mechanize'
Albo nie dopisuje do include i dostaje exe, ale przy próbie uruchomienia jest ten sam błąd.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads