インポートしようとすると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です。
ユーレカ!これを機能させるために、髪を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
私は同じ問題を抱えていました、このようにそれを解決しました:
pip
を使用してパッケージpsycopg2
を再インストールします(デフォルトではpython 3でインストールされます)
Linuxの場合:
pipアンインストールpsycopg2
(y)で確認してから:
pip install psycopg2
Windowsでは、上記のコマンドにプレフィックス('python -m')
を追加します。 Pythonのバージョンを変更すると問題が発生すると思います。 (Python 3.5および3.6など)のマイナーバージョン間でも)。
このリンク https://github.com/jkehler/awslambda-psycopg2 からpsycopg2のコンパイル済みバージョンをダウンロードします。 psycopg2はPython用のCライブラリであるため、動作させるにはLinuxでコンパイルする必要があります。コンパイルの説明もそのリンクにあります。 https://github.com/jkehler に感謝します。
これは、新しいUbuntu 18.04でも発生します。これは、/ usr/local/lib/python3.7/site-packages/psycopg2にある1つのファイル_psycopg.pyが欠落していることが原因です。
それは以下によって修正されます:
pip3 uninstall psycopg2
。tar xvf psycopg2-2.7.7.tar.gz
python setup.py build
Sudo python setup.py install
Python 2を使用してLinuxでこれが発生しました。誤ってPYTHONPATHをPython 3ライブラリに設定していたため、Python3バージョンをロードしようとしたためです。 psycopg2。解決策はunset PYTHONPATH
。
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()
ほとんどの場合、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にアップロードします-これで、エラーなしで正常に実行されます。
Windowsでも同じエラーが発生しましたが、これでうまくいきました。pipinstall -U psycopg2
古いバージョンをインストールしていたので、減価償却したはずです