2009-09-05 57 views
30

我使用Macports安裝了Pythong2.6,psycopg2和pgAdmin3。我的settings.py是:Django/Python初學者:執行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. 

當我運行python 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傢伙,正在嘗試用於一個小型個人項目的Python。我需要「打開」Postgres嗎?

此外,當我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似乎有問題 - Python找不到它。這是一個Python安裝問題,而不是Django問題。

您可以嘗試使用Python解釋器手動加載它,看看它的工作原理:

$ python 
>>> import psycopg2 

如果你得到一個ImportError例外,您的安裝是錯誤的。爲了讓所有目錄的Python查找模塊的列表,使用sys.path

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

您也可以通過修改sys.path變量添加自定義目錄Python的模塊搜索路徑。

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

# ... 
import psycopg2 
+0

我該怎麼做才能讓python在這個路徑中查找/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 2009-09-05 12:40:30

+0

您可以修改sys.path以添加您自己的搜索目錄。對於django,你應該在settings.py中執行此操作。查看我更新的帖子以獲取詳細信 – 2009-09-05 12:42:07

+0

是否可以創建一個由Macports創建的python路徑的符號鏈接?基本上,我有這樣的東西:Python.framework - > /opt/local/Library/Frameworks/Python.framework – wenbert 2009-09-05 12:54:46

3

雖然你已經安裝了它,但Python顯然找不到模塊psycopg2。這通常是由於模塊不在Python的路徑中。看看您是否可以在/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages中找到名爲psycopg2的文件夾。如果它不在那裏,MacPorts會告訴你它把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 2009-09-05 12:10:57

11

因爲我得到了一個不同的原因相同的錯誤記錄:

我已經把的

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

替代相應的import聲明(S)之前做到這一點的地方

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

in settings.py

0

蒂姆的答案也適用於我。 默認情況下,settings.py顯示諸如'postgresql_psycopg2','mysql'等選項,沒有包名稱。用'django.db.backends'前綴。爲我工作(至少postgresql_psycopg2)。

1

是Tim的回答對我也有效,它沒有前綴'django.db.backends'。也。但請記住創建您在設置中提到的數據庫或架構。潘岳:

DATABASE_NAME = 'your_db_name' 

使用您的數據庫客戶端手動所以,當你運行「Python的manage.py執行syncdb」你沒有得到同樣的問題。我被卡住了,因爲我沒有手動創建它。我遇到了同樣的問題,可能是因爲我使用了buildout。

1

我得到了同樣的錯誤,但它是因爲我用python26 ./manage.py runserver,當我的virtualenv只有pythonpython2.6可執行文件(因此正在使用的系統python26,它不具有psycopg2安裝

+0

感謝這幫了我 – mtay 2011-09-19 08:55:28

21

如果您已經安裝pip,只需運行安裝缺少擴展:

$ pip install psycopg2 
+0

我有一個額外的問題:http://stackoverflow.com/questions/11618898/pg-config-executable-not-found – 2016-07-17 12:23:22

+0

一旦psycopg2通過pkg管理器安裝,您必須運行pip命令 – JamesC 2016-08-16 21:30:10

3

我意識到我沒有psycopg2安裝

aptitude install python-psycopg2 

工作就像一個魅力

1

對於我來說,的確是安裝psycopg2,但不進入其中Django的是跑的virtualenv。這兩個步驟固定它:

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

我在OSX上更新自制軟件後最近有這個問題。 psycopg2在我的virtualenv 已經上市我剛剛重新安裝psycopg2並再次

pip install --forece-reinstall psycopg2

0

我的工作在Windows和安裝了psycopg2,但64位版本。所以我的修復是從here下載32位之一,然後在PowerShell和我激活的虛擬環境中,我的修補程序是:

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安裝程序自動安裝的easy_install和點子,和PIP是最簡單的方法。刪除軟件包,即使使用的easy_install原來安裝)

相關問題