簡體   English   中英

Django/Python 初學者:執行 python manage.py syncdb 時出錯 - 找不到 psycopg2

[英]Django/Python Beginner: Error when executing python manage.py syncdb - psycopg2 not found

我使用 Macports 安裝了 Pythong2.6、psycopg2 和 pgAdmin3。 我的 settings.py 是:

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 python 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

請指導我。 任何答復將不勝感激。

謝謝,

溫伯特!

你的psycopg2安裝似乎有問題——Python 沒有找到它。 這是 Python 安裝問題,而不是 Django 問題。

您可以嘗試使用 Python 解釋器手動加載它,看看它是否有效:

$ python
>>> import psycopg2

如果您收到ImportError異常,則您的安裝是錯誤的。 要獲取 Python 查找模塊的所有目錄的列表,請使用sys.path

$ python
>>> import sys
>>> print sys.path

您還可以通過修改sys.path變量將自定義目錄添加到 Python 的模塊搜索路徑。 在相應的import語句之前的某處執行此操作:

import sys
sys.path.append("my-path")

# ...
import psycopg2

如果您安裝了pip ,只需運行以下命令安裝缺少的擴展:

$ pip install psycopg2

為了記錄,我由於不同的原因得到了同樣的錯誤:

我已經把

'ENGINE': 'django.db.backends.postgresql'

代替

'ENGINE': 'django.db.backends.postgresql_psycopg2'

settings.py

按照步驟:

  1. 在您的操作系統上安裝 python 庫:
    • python-dev
    • libpq-dev
  2. 執行命令安裝psycopg2庫:
    • easy_install psycopg2

來源: http : //initd.org/psycopg/install/

我意識到我沒有安裝 psycopg2

aptitude install python-psycopg2

像魅力一樣工作

盡管您安裝了它,但 Python 顯然找不到模塊 psycopg2。 這通常是由於模塊不在 Python 的路徑中。 看看是否可以在/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages找到名為 psycopg2 的文件/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages 如果它不在那里,MacPorts 有沒有告訴你它把 psycopg2 放在哪里? 如果你能找到它,只需將它移動到site-packages目錄,你應該沒問題。

我最近在 OSX 上更新自制軟件后遇到了這個問題。 psycopg2 已經列在我的 virtualenv 中。 我剛剛重新安裝了 psycopg2,它又工作了:

pip install --force-reinstall psycopg2

對我來說,確實安裝了 psycopg2,但沒有安裝到運行 Django 的 virtualenv 中。 這兩個步驟修復了它:

sudo apt-get build-dep python-psycopg2
sudo /opt/myenv/bin/pip install psycopg2

是的,Tim 的回答也適用於我。它沒有前綴“django.db.backends”。 還。 但請記住創建您在 settings.py 中提到的數據庫或架構:

DATABASE_NAME = 'your_db_name' 

手動使用您的數據庫客戶端,因此當您運行“python manage.py syncdb”時,您不會遇到同樣的問題。 我被卡住了,因為我沒有手動創建它。 我遇到了同樣的問題,可能是因為我使用了 buildout。

我遇到了同樣的錯誤,但這是因為當我的 virtualenv 只有pythonpython2.6可執行文件時,我正在使用python26 ./manage.py runserver (因此正在使用系統python26 ,它沒有安裝psycopg2

我在 Windows 上安裝了 psycopg2,但安裝的是 64 位版本。 所以我的修復方法是從這里下載 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,而 pip 是刪除包的最簡單方法,即使最初是使用 easy_install 安裝的。)

這對我有幫助:

我剛剛將 PostgreSQL bin 路徑添加到 ENV 中,它能夠調整所需的 dll:C:\\Program Files (x86)\\PostgreSQL\\9.4\\bin

https://groups.google.com/forum/#!topic/robotframework-users/qLq9KvHe1wE

蒂姆的回答也對我有用。 默認情況下,settings.py 顯示“postgresql_psycopg2”、“mysql”等選項,沒有包名。 以“django.db.backends”為前綴。 為我工作(至少對於 postgresql_psycopg2)。

在這里一樣,但可能在當前項目中遺漏了,所以我導航到主項目目錄並安裝它。

pip install psycopg2

它起作用了

您可以在使用 django postgresql 作為后端的 heroku 部署中遇到此錯誤,只需將 psycopg2 添加到您的 requirements.txt 文件中

當您忘記激活虛擬環境時,也會發生此錯誤。

將 Django 3.2.9 與 Python 3.9.1 一起使用,在pip3 install psycopg2 ,這是我必須做的才能使初始python manage.py migrate工作:

在我的 Django 站點的settings.py文件中,我將這些行添加到文件頂部(在from pathlib import Path行之后):

import sys
sys.path.append('Users/MY_USER_NAME/Sites/SITE_NAME/env/lib/python3.9/site-packages')

抱歉... ~/Sites/...路徑設置不起作用(我試過) ,它需要是一個絕對的完整路徑。

我的數據庫設置如下:

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.postgresql',
      'NAME': 'DATABASE_NAME',
      'USER': os.getenv('PG_USER'),
      'PASSWORD': os.getenv('PG_PASS'),
      'PORT': '5432',
      'USE_TZ': True,
   }
}

一旦我將這兩行添加到settings.py文件的頂部,遷移就成功運行了 :)

對於沒有發現模塊的錯誤,通常一個好的

pip install module_name

會解決問題。 如果不是這種情況,請查找您要安裝的模塊的二進制文件。 安裝二進制文件,然后再次安裝模塊。 這種情況下的示例模塊是

心理戰警2

二進制是 psychopg2-binary 所以像這樣安裝它們

pip install psycopg2-binary
pip install psycopg2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM