我正在尝试这样做:
python3.3 manage.py runserver
在我的Django项目文件夹中。我收到此错误消息:
File "/usr/local/lib/python3.3/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 25, in <module>
raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'
我在settings.py中的设置如下:
DATABASES = {
'default': {
'ENGINE':'django.db.backends.postgresql_psycopg2',
'NAME': 'test_databas',
'USER': 'postgre',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
我已经用Python3.3下载了psycopg2。文件/usr/local/lib/python3.3/site-packages/django/db/backends/postgresql_psycopg2/base.py也存在。但是,Python并不认为我有一个名为psycopg2的模块。我试过这个:
$ python3.3
Python 3.3.3 (default, Feb 2 2014, 14:32:49)
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'psycopg2'
>>>
我也按照建议here更改了我的sys.path。
我是新手,非常感谢你的帮助。
答案 0 :(得分:4)
我查看psycopg2
apt-cache show python-psycopg2
包:python-psycopg2
优先级:可选
部分:python
已安装尺寸:635
...
来源:psycopg2
版本:2.4.5-1
取决于:python2.7,python(&gt; = 2.7.1-0ubuntu2),python(&lt;&lt; 2.8),libc6(&gt; = 2.14),libpq5(&gt; = 8.3~)< /强>
因此,python-psycopg2
会为您安装与python 3.x
不兼容的版本。但是还有一个名为python3-psycopg2
的软件包当我检查它时,它看起来也是版本:2.4.5-1 但描述性文字表明它与python 3.2
apt-cache show python3-psycopg2
包:python3-psycopg2
优先级:可选
版本:2.4.5-1
提供:python3.2-psycopg2
取决于:python3(&gt; = 3.2),python3(&lt;&lt;&lt; 3.3),libc6(&gt; = 2.14),libpq5(&gt; = 8.3~)
此外,包装尺寸也不同。可能python3-psycopg2
正是您所需要的,它只是在文档上版本错误。
答案 1 :(得分:2)
我遇到了这个问题,并按照以下流程解决了问题:
安装pip3:
sudo apt-get install python3-pip
安装virtualenv:
sudo pip3 install virtualenv
安装posgresql依赖项:
sudo apt-get install python3-dev libpq-dev
配置virtualenv:
mkdir django
cd django
virtualenv -p /usr/bin/python3.4 venv
source venv/bin/activate
安装django:
pip3 install django
安装psycopg2:
pip3 install psycopg2
答案 2 :(得分:0)
如果您尝试使用默认用户,则拼错了“postgres”:
'USER': 'postgre',
http://pythonhosted.org//psycopg2/install.html#installation处的文档建议使用repos安装软件包。但是,请检查$ PATH变量。
答案 3 :(得分:0)
我自己解决了这个问题,但是我不确定为什么这会是一个很好的解决方案。对我来说,这个命令没有正确安装psycopg2:
sudo apt-get install python-psycopg2
我无法通过在python3.3中导入模块从命令行获取版本。所以这就是我所做的:
sudo apt-get install libpq-dev
sudo easy_install psycopg2
现在它看起来像这样:
$ python3.3 manage.py runserver
Validating models...
0 errors found
February 03, 2014 - 08:54:13
Django version 1.6.1, using settings 'testprojekt.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
如果有人知道为什么这样可以解决问题,请随时发表评论。 :)
答案 4 :(得分:0)
我建议你让生活更轻松,并使用virtualenv和pip来安装库。为什么?因为在virtualenv中你可以避免误认为python可执行文件和库已经安装了选定的python版本。
我个人为每个项目保留一个virtualenv,所以我只有我真正需要的库。另外我知道,随着更新系统,我不会最终得到一些不向后兼容的新版本的库。但是,如果pip upgrade <library>
需要,我仍然可以更新库。我可以打包virtualenv并为我的项目制作需求列表。我不需要sudo来安装软件包,因此它也更安全。
安装virtualenv
sudo apt-get install python-virtualenv
准备virtualenv环境
sebastian@pc:~/test$ virtualenv -p python3.4 p34_virt_env
Running virtualenv with interpreter /usr/bin/python3.4
(...)
检查系统默认的python解释器
sebastian@pc:~/test$ python --version
Python 2.7.6
激活virtualenv环境(参见(p34_virt_env)virtualenv指标?)
sebastian@pc:~/test$ source p34_virt_env/bin/activate
再次检查python版本 - 它已更改
(p34_virt_env)sebastian@pc:~/test$ python --version
Python 3.4.0
您没有图书馆,环境清洁
(p34_virt_env)sebastian@pc:~/test$ pip list
pip (1.5.6)
setuptools (3.6)
现在,您可以安装所需的内容,如果必须安装python3-xxx
python-xxx
库,请不要担心。
(p34_virt_env)sebastian@pc:~/test$ pip install psycopg2