2009-09-05 30 views
30

मेरे पास Pythong2.6, psycopg2 और pgAdmin3 मैकपोर्ट का उपयोग करके स्थापित है। मेरे settings.py है:Django/Python Beginner: python manage.py syncdb निष्पादित करते समय त्रुटि - 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. 

त्रुटि मैं जब मैं अजगर manage.py syncdb चलाने है:

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 

कृपया ध्यान दें, मैं इस सामान में एक पूरा शुरुआत कर रहा हूँ। मैं मूल रूप से एक PHP-guy हूं और एक छोटी निजी परियोजना के लिए पायथन की कोशिश कर रहा हूं। क्या मुझे पोस्टग्रेस "चालू" करने की ज़रूरत है?

इसके अलावा, जब मैं sudo अजगर manage.py runserver 8080 मैं इस त्रुटि मिलती है:

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 

कृपया मुझे गाइड। किसी भी उत्तर की सराहना की जाएगी।

धन्यवाद,

वेनबर्ट!

उत्तर

32

आपके psycopg2 स्थापना के साथ कोई समस्या प्रतीत होती है - पायथन इसे नहीं ढूंढता है। यह एक पायथन स्थापना समस्या है, न कि Django मुद्दा।

आप अजगर दुभाषिया का उपयोग कर मैन्युअल रूप से इसे लोड और देखने के लिए अगर यह काम करता है की कोशिश कर सकते हैं:

$ python 
>>> import psycopg2 

आप एक ImportError अपवाद मिलता है, अपनी स्थापना गलत है। सभी निर्देशिकाओं अजगर मॉड्यूल के लिए लग रहा है की एक सूची प्राप्त करने के लिए, sys.path का उपयोग करें:

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

तुम भी sys.path चर संशोधित करके पायथन के मॉड्यूल खोज पथ के लिए कस्टम निर्देशिका जोड़ सकते हैं।

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

# ... 
import psycopg2 
+0

मैं क्या करता हूं ताकि पाइथन इस पथ /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/library/Frameworks/Python.framework/Versions के बजाय दिखता है /2.6/lib/python2.6/site-packages – wenbert

+0

आप अपनी खुद की खोज निर्देशिका जोड़ने के लिए sys.path को संशोधित कर सकते हैं। Django के लिए, आपको इसे अपनी सेटिंग्स.py में करना चाहिए। विवरण के लिए मेरी अद्यतन पोस्ट देखें। –

+0

क्या यह ठीक है अगर मैंने मैकपोर्ट द्वारा बनाए गए पायथन पथ के लिए एक प्रतीकात्मक लिंक बनाया है? असल में, मेरे पास ऐसा कुछ है: पायथन। फ्रेमवर्क -> /opt/local/Library/Frameworks/Python.framework – wenbert

3

हालांकि आपने इसे स्थापित किया है, पाइथन स्पष्ट रूप से मॉड्यूल psycopg2 नहीं ढूंढ सकता है। यह आमतौर पर पाइथन के पथ में नहीं होने वाले मॉड्यूल के कारण होता है। देखें कि क्या आप /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages में psycopg2 नामक फ़ोल्डर ढूंढ सकते हैं। यदि यह वहां नहीं है, तो मैकपॉर्ट्स ने आपको बताया कि यह psycopg2 कहां रखता है? यदि आप इसका पता लगा सकते हैं, तो इसे site-packages निर्देशिका पर ले जाएं और आपको ठीक होना चाहिए।

+0

psycopg2 यहाँ पाया जाता है: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/psycopg2-2.0.12 -py2.6.egg-info आप क्या सुझाव देंगे कि मैं करता हूं? – wenbert

11

रिकॉर्ड मैं एक अलग कारण के लिए एक ही त्रुटि मिली लिए::

मैं

की

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

बजाय रखा था संबंधित import कथन (नों) से पहले इस कहीं है

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

settings.py

में
0

टिम का जवाब भी मेरे लिए काम किया। डिफ़ॉल्ट रूप से, settings.py पैकेज नाम के बिना 'postgresql_psycopg2', 'mysql', आदि जैसे विकल्प दिखाता है। 'Django.db.backends' के साथ उपसर्ग। मेरे लिए काम किया (कम से कम postgresql_psycopg2 के लिए)।

1

हाँ टिम का उत्तर भी मेरे लिए काम करता है। यह उपसर्ग 'django.db.backends' के बिना काम करता है। भी। लेकिन सेटिंग्स में उल्लिखित डेटाबेस या स्कीमा बनाने के लिए याद रखें।py:

DATABASE_NAME = 'your_db_name' 

मैन्युअल रूप से अपने डेटाबेस क्लाइंट का उपयोग इसलिए जब आप 'अजगर manage.py syncdb' चलाने आप नहीं एक ही समस्या मिलता है। मैं फंस गया था क्योंकि मैंने इसे मैन्युअल रूप से नहीं बनाया था। मुझे वही समस्या हो सकती है क्योंकि मैंने बिल्डआउट का इस्तेमाल किया था।

1

मैं एक ही त्रुटि मिली है, लेकिन यह था, क्योंकि मैं python26 ./manage.py runserver उपयोग कर रहा था जब मेरे virtualenv केवल python और python2.6 निष्पादनयोग्य (इस प्रकार प्रणाली python26 इस्तेमाल किया जा रहा था, जो psycopg2 स्थापित

+0

धन्यवाद इससे मुझे – mtay

4

चरणों का पालन नहीं किया है :

  1. स्थापित अजगर पुस्तकालयों:
    • अजगर-देव
    • libpq-देव
  2. निष्पादित आदेश
    • easy_install psycopg2

स्रोत: http://initd.org/psycopg/install/

21

आप pip स्थापित है, तो बस चलाकर लापता विस्तार स्थापित :

$ pip install psycopg2 
+0

में मदद मिली मुझे एक अतिरिक्त समस्या थी: http://stackoverflow.com/questions/11618898/pg-config-executable-not-found –

+0

एक बार pskcopg2 pkg प्रबंधक के माध्यम से स्थापित हो जाने के बाद आपको पीपी कमांड चलाया जाना चाहिए – JamesC

3

मुझे एहसास हुआ कि मैं psycopg2 स्थापित

aptitude install python-psycopg2 

एक आकर्षण

1

मेरे लिए की तरह काम किया नहीं था, psycopg2 वास्तव में स्थापित किया गया था, लेकिन virtualenv जिसमें Django चल रहा था में। इन दो चरणों ने इसे ठीक किया:

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

मुझे ओएसएक्स पर होमब्रू अपडेट करने के बाद हाल ही में यह समस्या थी। psycopg2 पहले से ही मेरे virtualenv में सूचीबद्ध किया गया मैं सिर्फ psycopg2 पुनर्स्थापित और इसे फिर से

pip install --forece-reinstall psycopg2

0

मैं काम किया विंडोज पर और psycopg2 स्थापित किया था, लेकिन 64 बिट संस्करण। तो मेरी ठीक 32 बिट एक मेरी आभासी सक्रिय पर्यावरण के साथ PowerShell में तो here से डाउनलोड करने के लिए था, मेरे ठीक था:

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

(विंडोज अजगर 3.4 संस्थापक स्वतः easy_install और पिप को स्थापित करता है, और पिप सबसे आसान तरीका है । पैकेज को दूर करने, मूल रूप से easy_install का उपयोग कर स्थापित भले ही)

संबंधित मुद्दे