Psycopg2链接错误,包含不正确或其他问题?

0 投票
1 回答
614 浏览
提问于 2025-04-17 01:34

我在我的网络托管服务上用Django连接PostgreSQL数据库时遇到了麻烦。

我的情况是这样的:我在网络托管服务上有一个账户,但我没有管理员权限,也不能安装任何东西,除了在我自己的主文件夹里。我是通过fcgi来运行Django的(因为这是我知道的唯一方法)。我正在尝试把我的网站转换为使用Django。这个网络托管服务器是64位的(我想是debian或者某种定制的系统)。

经过很多关于包含文件的麻烦(尤其是要把所有包含文件放在哪里),我已经走了很远,Django的功能基本上都能用了,除了无法连接到我的PostgreSQL数据库。我已经在我的~/python-modules/文件夹里“安装”了Django和psycopg2(也就是解压并放到了我的$PYTHONPATH里)。

但是在尝试运行python manage.py syncdb时,我却遇到了这个错误:

> Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    execute_manager(settings)
  File "/home/users/username/python-modules/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/home/users/username/python-modules/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/users/username/python-modules/django/core/management/__init__.py", line 261, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/home/users/username/python-modules/django/core/management/__init__.py", line 67, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/home/users/username/python-modules/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/home/users/username/python-modules/django/core/management/commands/syncdb.py", line 7, in <module>
    from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
  File "/home/users/username/python-modules/django/core/management/sql.py", line 6, in <module>
    from django.db import models
  File "/home/users/username/python-modules/django/db/__init__.py", line 78, in <module>
    connection = connections[DEFAULT_DB_ALIAS]
  File "/home/users/username/python-modules/django/db/utils.py", line 93, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/home/users/username/python-modules/django/db/utils.py", line 33, in load_backend
    return import_module('.base', backend_name)
  File "/home/users/username/python-modules/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/home/users/username/python-modules/django/db/backends/postgresql_psycopg2/base.py", line 24, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: /home/users/username/python-modules/psycopg2-2.4.2/build/lib.linux-x86_64-2.6/psycopg2/_psycopg.so: undefined symbol: PyByteArray_Type

我现在完全不知道为什么它找不到基本的Python数据类型。是不是psycopg2链接到了错误的Python版本或者其他什么问题?

1 个回答

0

是的,这看起来像是版本问题。更准确地说,你现在运行的Python版本比psycopg2这个库所支持的版本要低(是2.6)。

你可以通过运行 'python -V' 或者调用 'sys.version_info' 来检查你的Python版本,不过如果你使用的是Debian稳定版,那么默认的Python版本是2.5。

撰写回答