2012-06-20 41 views
5

Tôi đã tạo một virtualenv trong thư mục ứng dụng django của mình và ở đó tôi đã cài đặt tất cả các phụ thuộc python của mình. Dự án Django của tôi được gọi là chủ đề, vì vậy trong thư mục chủ đề có một thư mục venv chứa libs python. Nếu tôi chạy python manage.py syncdb nó sẽ ném Error was: No module named postgresql_psycopg2.base. Đây là traceback:Các vấn đề với cài đặt psycopg2/đường dẫn Python

(venv)[email protected]:~/dj/theme$ python manage.py syncdb 
Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_manager(settings) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 459, in execute_manager 
    utility.execute() 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command 
    klass = load_command_class(app_name, subcommand) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class 
    module = import_module('%s.management.commands.%s' % (app_name, name)) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module> 
    from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/sql.py", line 6, in <module> 
    from django.db import models 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module> 
    backend = load_backend(connection.settings_dict['ENGINE']) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__ 
    return getattr(connections[DEFAULT_DB_ALIAS], item) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/db/utils.py", line 92, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/db/utils.py", line 51, in load_backend 
    raise ImproperlyConfigured(error_msg) 
django.core.exceptions.ImproperlyConfigured: 'postgresql_psycopg2' isn't an available database backend. 
Try using django.db.backends.postgresql_psycopg2 instead. 
Error was: No module named postgresql_psycopg2.base 

Nhưng vấn đề là rằng nếu tôi cố gắng nhập khẩu psycopg2 từ một dòng lệnh python, nó hoạt động:

(venv)[email protected]:~/dj/theme$ python 
Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import psycopg2 
>>> quit() 

và đây là con đường python của tôi:

>>> import sys 
>>> print sys.path 
['', '/home/app/dj/theme/venv/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg', '/home/app/dj/theme/venv/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg', '/home/app/dj/theme/venv/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg', '/home/app/dj/theme/venv/lib/python2.7/site-packages/pip-1.1-py2.7.egg', '/home/app/dj/theme/venv/lib/python2.7', '/home/leonsas/dj/theme/venv/lib/python2.7/plat-linux2', '/home/app/dj/theme/venv/lib/python2.7/lib-tk', '/home/app/dj/theme/venv/lib/python2.7/lib-old', '/home/app/dj/theme/venv/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/home/app/dj/theme/venv/local/lib/python2.7/site-packages', '/home/app/dj/theme/venv/lib/python2.7/site-packages'] 
>>> quit() 

whereis python:

(venv)[email protected]:~/dj/theme$ whereis python 
python: /usr/bin/python2.7 /usr/bin/python /usr/bin/python2.7-config /etc/python2.7 /etc/python /usr/lib/python2.7 /usr/bin/X11/python2.7 /usr/bin/X11/python /usr/bin/X11/python2.7-config /usr/local/lib/python2.7 /usr/include/python2.7 /usr/share/python /usr/share/man/man1/python.1.gz 

Tôi tin rằng vấn đề nằm ở đó, nhưng tôi không chắc chắn làm thế nào để sửa chữa nó. Bất kỳ ý tưởng?

Trả lời

10

Cố gắng làm theo những gợi ý từ các django.core.exceptions.ImproperlyConfigured ngoại lệ: sử dụng 'django.db.backends.postgresql_psycopg2' thay vì 'postgresql_psycopg2' trong DATABASES trong cài đặt của bạn

+0

Vâng nó làm việc. Tôi đã thử bằng cách sử dụng django.db.backends.postgresql_psycopg2 (không có dấu ngoặc kép), nhưng cách chính xác là để vượt qua nó như là một chuỗi, vì vậy 'django.db.backends.postgresql_psycopg2' làm việc. – leonsas

Các vấn đề liên quan