5
我在我的django應用程序文件夾中創建了一個virtualenv,在那裏我安裝了所有的python依賴項。我的Django項目被稱爲主題,所以在主題文件夾中有一個venv文件夾,其中包含python庫。 如果我運行python manage.py syncdb
它會拋出Error was: No module named postgresql_psycopg2.base
。這裏是回溯:psycopg2安裝問題/ 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
但問題是,如果我嘗試從一個Python的命令行輸入psycopg2,它的工作原理:
(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()
,這裏是我的Python路徑:
>>> 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
我相信問題在那裏,但我不知道如何解決它。有任何想法嗎?
呀,它的工作。我曾嘗試使用django.db.backends.postgresql_psycopg2(不帶引號),但正確的方法是將它作爲字符串傳遞,因此'django.db.backends.postgresql_psycopg2'起作用。 – leonsas