Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-05-04 16:55:33

  HAL9000 - Użytkownik

HAL9000
Użytkownik
Zarejestrowany: 2006-04-22

Pakiety pythona (psycopg2)

Niedawno zacząłem uczyć się pythona i aby wykorzystać nabytą wiedzę (jak dotad bardzo uboga) w jakiś praktyczny sposób chciałem "pobawić się" django.
Zainstalowałem wiec pakiet python-django z repozytorium i wówczas rozpoczely sie problemy.
Po pierwsze prakiet jest instalowany w /usr/share/pyshared, a ten folder nie nalezy do domyslnej sciezki pythona w debianie co akurat ogarnalem w miare szyko dodajac odpowiednie wpisy.

Kod:

>>> import sys
>>> print sys.path
['', '/usr/share/pyshared', '/usr/share/pyshared/gtk-2.0', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7']
>>>

Nastepnie przy probie uruchomienia django z repozytorium:

Kod:

$ python2.7 manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 2, in <module>
    from django.core.management import execute_manager
ImportError: No module named core.management

ale

Kod:

$ python2.7
Python 2.7.1+ (default, Apr 20 2011, 10:53:33) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>>

jak sie okazalo ktos usunal pliki __init__.py z niektorych katalogow tego pakietu z debiana ale w jakim celu to nie wiem.

Django pobranie z svn działa wiec i to jakos przeboleje.

Proba uruchomienia django z svn:

Kod:

$ python2.7 manage.py runserver
Validating models...

0 errors found
Django version 1.4 pre-alpha SVN-16149, using settings 'blog.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

czyli jak dotad looz ;-). Podrecznik django zaleca uzycie postgresql http://www.djangobook.com/en/2.0/chapter02/ i pakietu psycopg2 ale przy probie sprawdzenia czy ten modul do obslugi postgresql w ogole dziala otrzymuje komunikat:

Kod:

$ python2.7 
Python 2.7.1+ (default, Apr 20 2011, 10:53:33) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/share/pyshared/psycopg2/__init__.py", line 69, in <module>
    from _psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: No module named _psycopg
>>> import psycopg2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/share/pyshared/psycopg2/__init__.py", line 65, in <module>
    from psycopg2 import tz
ImportError: cannot import name tz
>>>

Zapoznawszy się z polityka debiana dotyczaca pakietow pythona ( http://www.debian.org/doc/packaging-manuals/python- … h-python.html ) probowalem z pythonem 2.6 ale skutek jest podobny.
Wczoraj spedzilem czytaj stracilem okolo pol dnia szukajac rozwiazan kolejnych problemow i na nic odkrywczego nie trafilem i w zwiazku z tym ostatnim i mam pytanie.

Ktoś ogarnia temat pakietów pythona na tyle aby wskazac mi co powinienem zrobic aby moc skorzystac z psycopg2? Wyglada na to iz brakuje czegos z psycopg1 ktorego w repozytorium nie ma a i easy_install nie potrafi zainstalowac tego pakietu.


Tak przy okazji 
Czy opiekunowie tych pakietow w ogole sprawdzaja ich poprawne dzialanie czy tylko robia paczki i ida na piwo? Wiem o istnieniu stron/list do raportowania prawdziwych i wyimaginowanych bledow, ale zeby wszystko po kolei sprawialo tyle problemow.


For some reason I'm thinking I'm still 25 but I act like I'm 12.

Offline

 

#2  2011-05-04 17:00:15

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Pakiety pythona (psycopg2)

Python2.7 - to jest niby stabilny python, ale ciągle część modulów na nim działa, ale nie wszystkie.
Na 95% potrzebujesz stabilnego pythona 2.6, na którym zazwyczaj wszystko działa.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2011-05-04 19:51:16

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Pakiety pythona (psycopg2)

Mam Pythona 2.7.1 w Ubuntu, django stabilne 1.3.0 ze strony i wszystko działa. Polecam.

Offline

 

#4  2011-05-04 21:41:50

  HAL9000 - Użytkownik

HAL9000
Użytkownik
Zarejestrowany: 2006-04-22

Re: Pakiety pythona (psycopg2)

To naprawdę imponujące! Ale co polecasz? stabilne django, ubuntu czy też coś innego?
Ja pytam o konkretny problem.
W archlinux też jest problem w postaci:

Kod:

python2 manage.py runserver
Validating models...

Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.commands.runserver.Command object at 0x1f2cf50>>
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 88, in inner_run
    self.validate(display_num_errors=True)
  File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 243, in validate
    from django.core.management.validation import get_validation_errors
  File "/usr/lib/python2.7/site-packages/django/core/management/validation.py", line 3, in <module>
    from django.contrib.contenttypes.generic import GenericForeignKey, GenericRelation
  File "/usr/lib/python2.7/site-packages/django/contrib/contenttypes/generic.py", line 6, in <module>
    from django.db import connection
  File "/usr/lib/python2.7/site-packages/django/db/__init__.py", line 78, in <module>
    connection = connections[DEFAULT_DB_ALIAS]
  File "/usr/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/usr/lib/python2.7/site-packages/django/db/utils.py", line 33, in load_backend
    return import_module('.base', backend_name)
  File "/usr/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/usr/lib/python2.7/site-packages/django/db/backends/postgresql/base.py", line 23, in <module>
    raise ImproperlyConfigured("Error loading psycopg module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg module: No module named psycopg

ale po zainstalowaniu

Kod:

sudo pacman -S python-psycopg1

Kod:

$ python2 manage.py runserver
Validating models...

0 errors found
Django version 1.3, using settings 'blog.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

wiec rozmawiajmy o konkretach a nie o tym co "działa" w ubuntu! "OK!" cytując z jakiegos polskiego filmu. //niestety nie pamietam ktorego
*Jacekalex
Jak juz wspomniałem w poście nr 1 w wersji 2.6 wystrpuje  identyczny blad.


For some reason I'm thinking I'm still 25 but I act like I'm 12.

Offline

 

#5  2011-05-05 17:11:01

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Pakiety pythona (psycopg2)

Stabilne django przede wszystkim. Nie rozumiem czemu raz instalujesz stare z paczek, a potem zamiast brać stabilne to z svn. A stare z paczek przecież zadowalało. Ubuntu nie koniecznie, zamiast tego  czytanie komunikatów. Np. "No module named psycopg" sprawdź czy masz taki moduł, pewnie nie bo masz psycopg2. Potem się dziwisz, że doinstalowałeś psycopg1 i zadziałało. Chcesz użyć psycopg2 skonfiguruj to w django. Sprawdź settings.py, DATABESES = { "...": { ENGINE: "django.db.backends.postgresql_psycopg2", ...} } . Tak masz, czy może jest inaczej? Polecam też poczytać dokumentację django, pythona. To co pisałem o tym, że mi działa chciałem rozwiać wątpliowści, że django niby nie działa z pythonem 2.7, zamiast którego trzeba używać 2.6. A tu zaraz krzyk.

Offline

 

#6  2011-05-05 22:09:35

  HAL9000 - Użytkownik

HAL9000
Użytkownik
Zarejestrowany: 2006-04-22

Re: Pakiety pythona (psycopg2)

Nie krzyczę, to po 1.

If you’re using PostgreSQL, you’ll need to install either the psycopg or psycopg2 package from ...

ta czesc brzmi dla mnie dosc jednoznacznie. Spójnik lub oznacza alternatywe a nie koniunkcje, jak zreszta mozna sie przekonac w repozytoriach debiana nie ma wersji 1.
Nastepnie

Kod:

ImportError: No module named _psycopg

Kod:

$ dpkg -L python-psycopg2
...
/usr/lib/python2.6/dist-packages/psycopg2/_psycopg.so
...
/usr/lib/python2.7/dist-packages/psycopg2/_psycopg.so
...

zapewne chodzi o ten plik ale już

Kod:

>>> os.chdir('/usr/lib/python2.6/dist-packages/psycopg2')
>>> import _psycopg
*** You don't have the (right) mxDateTime binaries installed !
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: can't import mx.DateTime module

i http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=389636
zaleznosci, ktore rzekomo zostaly usuniete 5 lat temu.

Następnie:

Psycopg raises ImportError: cannot import name tz on import in mod_wsgi / ASP, but it works fine otherwise.

z http://initd.org/psycopg/docs/faq.html
bo i taki bład sie pojawia nawet bez uzycia wsgi ale zwyczajnie przy imporcie z poziomu interpretera.

Ustawienie tej zmiennej daje przysłowiowy guzik.
http://stackoverflow.com/questions/2192323/what-is- … hon-egg-cache

Tak wiec wyglada na to, ze jezeli nie zostanie to odpowiednio zrobione na poziomie opiekuna pakietu, który rzeczywiście wie co robi, to wszystko się sypie jak przysłowiowa choinka na wielkanoc.
Ale spokojnie na archu wszystko ładnie działa z postgres a jezeli bede musial pracowac na debianie to uzyje sqlite, ktore jak juz sprawdzilem nie sprawia zadnych problemow.

I na koniec donosze radosna nowine:
w katalogu /usr/lib/pythonx.y/dist-packages wystarczy stworzyc plik sudo vim psycopg2.pth z zawartoscia psycopg2 i:

Kod:

$ python2.7 
Python 2.7.1+ (default, Apr 20 2011, 10:53:33) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
>>> c=psycopg2.connect("dbname=nemodb user=nemo password=wszyscychcielibywiedziec")
>>> cr=c.cursor()
>>> cr.execute("select * from test;")
>>> cr.fetchone()
(1, 'hello')

Tyle szukania a tutaj taka bzdura, jestem zalamany ;-)


For some reason I'm thinking I'm still 25 but I act like I'm 12.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)