web-dev-qa-db-ja.com

ImportError:「psycopg2._psycopg」という名前のモジュールはありません

インポートしようとするとpsycopg2それは私のためにログの下に表示されます:

Traceback (most recent call last):
  File "D:/Desktop/learn/python/webcatch/appserver/testpgsql.py", line 2, in <module>
    import psycopg2
  File "D:/Desktop/learn/python/webcatch/appserver/webcatch/lib/site-packages/psycopg2-2.6.1-py3.5-win32.Egg/psycopg2/__init__.py", line 50, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: No module named 'psycopg2._psycopg'

どうすれば解決できますか?私のプラットフォームはwin10(64)で、バージョンはpython 3.5です。

13
sappy

ユーレカ!これを機能させるために、髪を2日間引き出しました。啓発は this SO Question から来ました。簡単に言えば、おそらく私と同じようにpsycopg2 x64バージョンをインストールしましたが、pythonバージョンを認識していません32ビットでした。現在のpsycopg2をアンインストールすると、次のようになります。

ダウンロードpsycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exefrom [〜#〜] here [〜#〜] の場合、ターミナルで以下を実行します:

C:\path\to\project> easy_install /path/to/psycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exe
C:\path\to\project> python manage.py makemigrations
C:\path\to\project> python manage.py migrate

スーパーユーザーを(再)作成する必要がある場合もあります。

C:\path\to\project> python manage.py createsuperuser
13
Matthew Weber

私は同じ問題を抱えていました、このようにそれを解決しました:

pipを使用してパッケージpsycopg2を再インストールします(デフォルトではpython 3でインストールされます)

Linuxの場合:

pipアンインストールpsycopg2

(y)で確認してから:

pip install psycopg2

Windowsでは、上記のコマンドにプレフィックス('python -m')を追加します。 Pythonのバージョンを変更すると問題が発生すると思います。 (Python 3.5および3.6など)のマイナーバージョン間でも)。

4
JoDavid

このリンク https://github.com/jkehler/awslambda-psycopg2 からpsycopg2のコンパイル済みバージョンをダウンロードします。 psycopg2はPython用のCライブラリであるため、動作させるにはLinuxでコンパイルする必要があります。コンパイルの説明もそのリンクにあります。 https://github.com/jkehler に感謝します。

3

これは、新しいUbuntu 18.04でも発生します。これは、/ usr/local/lib/python3.7/site-packages/psycopg2にある1つのファイル_psycopg.pyが欠落していることが原因です。

それは以下によって修正されます:

  1. マシンから古いpsycopg2を削除しますpip3 uninstall psycopg2
  2. 公式ページhttp://initd.org/psycopg/tarballs/PSYCOPG-2-7/psycopg2-2.7.7.ta​​r.gz から新しいpyscopg2を手動でダウンロードします
  3. tar xvf psycopg2-2.7.7.tar.gz
  4. python setup.py build
  5. Sudo python setup.py install
2
Saray Chak

Python 2を使用してLinuxでこれが発生しました。誤ってPYTHONPATHをPython 3ライブラリに設定していたため、Python3バージョンをロードしようとしたためです。 psycopg2。解決策はunset PYTHONPATH

1
sudo

AWS Glueジョブでpsycopgを使用していますが、他の回答に記載されている指示に従うのが困難です。

私がしたことは、psycopg2-binaryをディレクトリにインストールし、そのディレクトリの内容をZip圧縮することです。

mkdir psycopg2-binary
cd psycopg2-binary
pip install psycopg2-binary -t  .
# in case using python3:
# python3 -m pip install --system psycopg2-binary -t  .
Zip -r9 psycopg2.Zip *

次に、psycopg2.ZipをS3バケットにコピーし、Glue Pythonジョブの「Pythonライブラリパス」の下に追加のSparkライブラリとして追加します。

次に、次のスクリプトを使用してジョブを起動し、psycopg2が存在するかどうかを確認します(Zipファイルは、Glueによって、ジョブスクリプトが配置されているディレクトリにダウンロードされます)。

from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
import sys
import os
import zipfile

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

Zip_ref = zipfile.ZipFile('./psycopg2.Zip', 'r')
print os.listdir('.')
Zip_ref.extractall('/tmp/packages')
Zip_ref.close()
sys.path.insert(0, '/tmp/packages')

import psycopg2
print(psycopg2.__version__)

job.commit()
1
Vzzarr

ほとんどの場合、WINDOWSパッケージはLAMBDAでうまく動作しないことを知りました。

WINDOWSにサードパーティのpscyopg2パッケージをインストールしてLAMBDAを実行しているときにも、同じ問題に直面しました。

解決:

step1>
Linuxにpsycopg2をインストールしました。
ディレクトリpsycopg2_binary-2.8.2.dist-infoおよびpsycopg2の両方をLinuxからWindowsにコピーしました。

step2>
ソース*.pyとともに、Windowsのサードパーティの依存関係psycopg2*.Zipファイルにコピーしてパッケージ化

step3>
ファイルをLAMBDAにアップロードします-これで、エラーなしで正常に実行されます。

0
Deep

Windowsでも同じエラーが発生しましたが、これでうまくいきました。pipinstall -U psycopg2

古いバージョンをインストールしていたので、減価償却したはずです

0
Ryan L