2009-09-05 16 views
30

Mam Pythong2.6, psycopg2 i pgAdmin3 zainstalowane za pomocą Macports. Moja settings.py jest:Django/Python Początkujący: błąd podczas wykonywania Pythona manage.py syncdb - nie znaleziono psycopg2

DATABASE_ENGINE = 'postgresql_psycopg2'   # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
DATABASE_NAME = 'mysite'    # Or path to database file if using sqlite3. 
DATABASE_USER = 'postgres'    # Not used with sqlite3. 
DATABASE_PASSWORD = ''   # Not used with sqlite3. 
DATABASE_HOST = ''    # Set to empty string for localhost. Not used with sqlite3. 
DATABASE_PORT = ''    # Set to empty string for default. Not used with sqlite3. 

Błąd pojawia kiedy uruchomić Pythona manage.py syncdb jest:

Traceback (most recent call last): 
    File "manage.py", line 11, in <module> 
    execute_manager(settings) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/__init__.py", line 362, in execute_manager 
    utility.execute() 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/__init__.py", line 303, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 195, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 221, in execute 
    self.validate() 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 249, in validate 
    num_errors = get_validation_errors(s, app) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/validation.py", line 22, in get_validation_errors 
    from django.db import models, connection 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 41, in <module> 
    backend = load_backend(settings.DATABASE_ENGINE) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 17, in load_backend 
    return import_module('.base', 'django.db.backends.%s' % backend_name) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 22, in <module> 
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e) 
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2 

Należy pamiętać, że jestem kompletnym początkującym w tej rzeczy. Pierwotnie jestem facetem PHP i wypróbowuję Python dla małego osobistego projektu. Czy muszę "włączyć" PostgreSQL?

Również kiedy sudo python manage.py runserver 8080 otrzymuję ten błąd:

Validating models... 
Unhandled exception in thread started by <function inner_run at 0x1242670> 
Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/commands/runserver.py", line 48, in inner_run 
    self.validate(display_num_errors=True) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 249, in validate 
    num_errors = get_validation_errors(s, app) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/validation.py", line 22, in get_validation_errors 
    from django.db import models, connection 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 41, in <module> 
    backend = load_backend(settings.DATABASE_ENGINE) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 17, in load_backend 
    return import_module('.base', 'django.db.backends.%s' % backend_name) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 22, in <module> 
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e) 
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2 

proszę kierować do mnie. Każda odpowiedź zostanie doceniona.

Dzięki,

Wenbert!

Odpowiedz

32

Wygląda na to, że wystąpił problem z instalacją psycopg2 - Python jej nie znajduje. Jest to problem z instalacją Pythona, a nie problemem Django.

Można spróbować załadować go ręcznie przy użyciu interpretera Pythona i sprawdzić, czy to działa:

$ python 
>>> import psycopg2 

Jeśli pojawi się wyjątek ImportError, instalacja jest błędna. Aby uzyskać listę wszystkich katalogów Python szuka modułów, użyj sys.path:

$ python 
>>> import sys 
>>> print sys.path 

Można również dodawać własne katalogi do ścieżki wyszukiwania moduł Pythona, modyfikując zmienną sys.path. Czy to gdzieś wcześniej odpowiedniego import Statement (s):

import sys 
sys.path.append("my-path") 

# ... 
import psycopg2 
+0

Co zrobić, aby pyton wyglądał w tej ścieżce /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages zamiast /Library/Frameworks/Python.framework/Versions /2.6/lib/python2.6/site-packages – wenbert

+0

Możesz zmodyfikować sys.path, aby dodać własne katalogi wyszukiwania. Dla django, powinieneś to zrobić w swoim settings.py. Zobacz mój zaktualizowany wpis, by poznać szczegóły. –

+0

Czy mogę utworzyć dowiązanie symboliczne do ścieżki w pythonie utworzonej przez Macports? Zasadniczo mam coś takiego: Python.framework -> /opt/local/Library/Frameworks/Python.framework – wenbert

3

Mimo że został zainstalowany, Python prawdopodobnie nie może znaleźć modułu psycopg2. Jest to zwykle spowodowane tym, że moduł nie jest w ścieżce Pythona. Sprawdź, czy możesz znaleźć folder o nazwie psycopg2 w numerze /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages. Jeśli go tam nie ma, czy MacPorts powiedział ci, gdzie umieścić psycopg2? Jeśli możesz go zlokalizować, po prostu przenieś go do katalogu site-packages i powinieneś być w porządku.

+0

psycopg2 znajduje się tutaj: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/psycopg2-2.0.12 -py2.6.egg-info Co sugerowałbyś, żebym zrobił? – wenbert

11

Dla przypomnienia Mam ten sam błąd z innego powodu:

włożyłem

'ENGINE': 'django.db.backends.postgresql' 

zamiast

'ENGINE': 'django.db.backends.postgresql_psycopg2' 

w settings.py

0

Odpowiedź Tima również zadziałała. Domyślnie settings.py wyświetla opcje takie jak "postgresql_psycopg2", "mysql" itp. Bez nazwy pakietu. Prefixowanie za pomocą "django.db.backends". pracował dla mnie (przynajmniej dla postgresql_psycopg2).

1

Tak, odpowiedź Tima działa również dla mnie. Działa bez prefiksu "django.db.backends". również. Pamiętaj jednak, aby utworzyć bazę danych lub schemat wspomniany w ustawieniach.py:

DATABASE_NAME = 'your_db_name' 

ręcznie przy użyciu klienta bazy danych, więc po uruchomieniu "python manage.py syncdb" nie masz tego samego problemu. Utknąłem, ponieważ nie stworzyłem go ręcznie. Mam taki sam problem, ponieważ użyłem buildouta.

1

mam ten sam błąd, ale to dlatego, że był przy python26 ./manage.py runserver gdy tylko moja virtualenv miał python i python2.6 wykonywalne (w ten sposób system python26 był używany, które nie mają psycopg2 zainstalowany

+0

dzięki temu pomogło mi – mtay

21

Jeśli masz pip zainstalowana, wystarczy zainstalować brakujący rozszerzenie uruchamiając :

$ pip install psycopg2 
+0

Mam dodatkowy problem: http://stackoverflow.com/questions/11618898/pg-config-executable-not-found –

+0

Po zainstalowaniu psycopg2 przez menedżera pkg należy uruchomić polecenie pip – JamesC

3

zdałem sobie sprawę, że nie mają psycopg2 zainstalowany

aptitude install python-psycopg2 

Pracował jak czar

1

Dla mnie psycopg2 rzeczywiście zainstalowany, ale nie do virtualenv w którym Django zostało uruchomione. Te dwa kroki naprawiły to:

sudo apt-get build-dep python-psycopg2 
sudo /opt/myenv/bin/pip install psycopg2 
0

Miałem ten problem niedawno po aktualizacji homebrew na OSX. psycopg2 został już wymieniony w moim virtualenv po prostu ponownie zainstalować psycopg2 i pracował ponownie

pip install --forece-reinstall psycopg2

0

jestem na Windows i zainstalował psycopg2, ale w wersji 64-bitowej. Więc moja poprawka było pobrać 32 bit jeden z here następnie w PowerShell z moim wirtualnym środowisku aktywnym, moja poprawka była:

pip uninstall psycopg2 
easy_install C:\WHEREVER_I_DOWNLOADED_IT\psycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exe 

(Windows Python 3.4 Instalator automatycznie instaluje easy_install i pip i pip jest najprostszym sposobem . usunąć pakiet, nawet jeśli pierwotnie zainstalowane przy użyciu easy_install)

Powiązane problemy