2009-09-05 60 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原来安装)