Ich bin neu in Python und Django.
Ich konfiguriere ein Django-Projekt mit dem PostgreSQL-Datenbank-Engine-Backend. Ich erhalte jedoch Fehler bei den einzelnen Datenbankoperationen. Wenn ich beispielsweise manage.py syncdb
ausführen, bekomme ich
C:\xampp\htdocs\djangodir>python manage.py syncdb
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "C:\Python27\lib\site-packages\Django\core\management\__init__.py", line
438, in execute_manager
utility.execute()
File "C:\Python27\lib\site-packages\Django\core\management\__init__.py", line
379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python27\lib\site-packages\Django\core\management\__init__.py", line
261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "C:\Python27\lib\site-packages\Django\core\management\__init__.py", line
67, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "C:\Python27\lib\site-packages\Django\utils\importlib.py", line 35, in im
port_module
__import__(name)
File "C:\Python27\lib\site-packages\Django\core\management\commands\syncdb.py"
, line 7, in <module>
from Django.core.management.sql import custom_sql_for_model, emit_post_sync_
signal
File "C:\Python27\lib\site-packages\Django\core\management\sql.py", line 6, in
<module>
from Django.db import models
File "C:\Python27\lib\site-packages\Django\db\__init__.py", line 77, in <modul
e>
connection = connections[DEFAULT_DB_ALIAS]
File "C:\Python27\lib\site-packages\Django\db\utils.py", line 92, in __getitem
__
backend = load_backend(db['ENGINE'])
File "C:\Python27\lib\site-packages\Django\db\utils.py", line 33, in load_back
end
return import_module('.base', backend_name)
File "C:\Python27\lib\site-packages\Django\utils\importlib.py", line 35, in im
port_module
__import__(name)
File "C:\Python27\lib\site-packages\Django\db\backends\postgresql\base.py", li
ne 23, in <module>
raise ImproperlyConfigured("Error loading psycopg module: %s" % e)
Django.core.exceptions.ImproperlyConfigured: Error loading psycopg module: No mo
dule named psycopg
Kann mir jemand einen Hinweis geben, was los ist?
Sie müssen die psycopg2
Python-Bibliothek installieren.
Laden Sie http://initd.org/psycopg/ herunter und installieren Sie es unter Python PATH
Entpacken Sie das Archiv nach dem Herunterladen einfach und:
$ python setup.py install
Wenn Sie möchten, installieren Sie es entweder über easy_install oder pip .
(Ich ziehe es vor, pip ohne easy_install zu verwenden.)
$ easy_install psycopg2
$ pip install psycopg2
in einstellungen .py
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.postgresql',
'NAME': 'db_name',
'USER': 'db_user',
'PASSWORD': 'db_user_password',
'Host': '',
'PORT': 'db_port_number',
}
}
- Weitere Installationsanweisungen finden Sie unter Download-Seite und Installationsseite .
Stellen Sie außerdem sicher, dass Sie das PostgreSQL-Entwicklungspaket installiert haben. __ Auf Ubuntu müssen Sie Folgendes tun:
$ Sudo apt-get install libpq-dev
Schritt für Schritt, den ich benutze:
Sie können ein Grafiktool für Manager-Datenbanken installieren und dann Folgendes tun: Sudo apt-get install postgresql pgadmin3
Danach müssen Sie das Postgre-Benutzerkennwort ändern und dann Folgendes tun:
In meiner Datei settings.py mache ich:
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'postgres',
'PASSWORD': 'postgres',
'Host': '',
'PORT': '',
}
}
Das mag etwas langwierig erscheinen, aber es hat für mich ohne Fehler funktioniert.
Installieren Sie zunächst phppgadmin vom Ubuntu Software Center.
Führen Sie dann diese Schritte im Terminal aus.
Sudo apt-get install libpq-dev python-dev
pip install psycopg2
Sudo apt-get install postgresql postgresql-contrib phppgadmin
Starten Sie den Apache-Server
Sudo service Apache2 start
Führen Sie dies nun auch im Terminal aus, um die Apache-Datei zu bearbeiten.
Sudo gedit /etc/Apache2/Apache2.conf
Fügen Sie der geöffneten Datei die folgende Zeile hinzu:
Include /etc/Apache2/conf.d/phppgadmin
Laden Sie jetzt Apache neu. Terminal verwenden.
Sudo /etc/init.d/Apache2 reload
Nun müssen Sie eine neue Datenbank erstellen. Melden Sie sich als "postgres" -Benutzer an. Weiter im Terminal.
Sudo su - postgres
Falls Sie Probleme mit dem Kennwort von 'postgres' haben, können Sie es mit der Antwort hier https://stackoverflow.com/a/12721020/1990793 ändern und mit den Schritten fortfahren.
Erstellen Sie jetzt eine Datenbank
createdb <db_name>
Erstellen Sie nun einen neuen Benutzer, um sich später bei phppgadmin anzumelden, und geben Sie ein neues Kennwort ein.
createuser -P <new_user>
Jetzt ist Ihr Postgressql eingerichtet und Sie können zu:
http://localhost/phppgadmin/
und melden Sie sich mit dem neuen Benutzer an, den Sie erstellt haben, um die Datenbank anzuzeigen.
Sie können "psycopg" mit dem folgenden Befehl installieren:
# Sudo easy_install psycopg2
Alternativ können Sie pip verwenden:
# pip install psycopg2
easy_install und pip sind in ActivePython enthalten oder werden manuell von jeweiligenproject sites installiert.
Oder holen Sie sich einfach den vorinstallierten Windows-Installer .
Das unmittelbare Problem scheint zu sein, dass das Modul psycopg fehlt.
Ich hatte das gleiche Problem auf Mac.
Die Lösung war, nur PIP zu verwenden, um alles zu installieren und einige Dinge zu berühren.
Installiere zuerst PIP von:https://pip.pypa.io/de/latest/
Dann möchten Sie sicherstellen, dass sich der Pfad zu pg_config in Ihrem -PFAD (echo $ PATH) befindet. Andernfalls können Sie Ihr bash_profile bearbeiten:
vi /Users/<user>/.bash_profile
und füge diese Zeile hinzu:
export PATH=$PATH:/path/to/pg_config/bin
Wenn Sie nicht wissen, wo sich pg_config befindet, können Sie das Tool "locate" verwenden, aber vergewissern Sie sich, dass locate.db auf dem neuesten Stand ist (ich habe eine alte locate.db und nicht vorhandene Pfade verwendet).
Sudo /usr/libexec/locate.updatedb
locate pg_config
Installieren Sie dann Django (falls erforderlich) und psycopg2.
Sudo pip install Django
Sudo pip install psycopg2
Und dann in settings.py (localhost: defaultport)
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'postgres',
'PASSWORD': 'postgres',
'Host': '',
'PORT': '',
}
}
Grüße
Wenn Sie Fedora 20, Django 1.6.5, postgresql 9.3. * Verwenden und das Modul psycopg2 benötigen, gehen Sie folgendermaßen vor:
yum install postgresql-devel
easy_install psycopg2
Wenn Sie wie ich sind, haben Sie möglicherweise Schwierigkeiten, die gut dokumentierte libpq-dev-RPM zu finden.
$ Sudo apt-get install libpq-dev
Jahr, das löst mein Problem . Nachdem Sie dies ausgeführt haben, tun Sie:
Bitte beachten Sie, dass zur Installation von psycopg2
über pip oder setup.py Visual Studio 2008 erforderlich ist (genauer gesagt die ausführbare Datei vcvarsall.bat). Wenn Sie nicht über Administratorrechte verfügen, um es zu installieren oder die entsprechende PATH-Variable unter Windows einzustellen, können Sie die bereits kompilierte Bibliothek von hier herunterladen.
Dies ist einer der sehr guten und schrittweisen Schritte zum Einrichten von PostgreSQL
im Ubuntu-Server. Ich habe es mit Ubuntu 16.04
und seiner Arbeitsweise ausprobiert.