web-dev-qa-db-fra.com

ImportError: aucun module nommé 'psycopg2._psycopg'

Lorsque j'essaie d'importer psycopg2 il montre ci-dessous journal pour moi:

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'

Comment puis-je le résoudre? Ma plateforme est win10 (64) et sa version est python 3.5

13
sappy

Eureka! J'ai arraché mes cheveux pendant 2 jours en essayant de faire fonctionner cela. L'illumination vient de this SO Question . En termes simples, vous avez probablement installé la version psycopg2 x64 comme je l'ai fait, sans réaliser votre python était en 32 bits. Désinstallez votre psycopg2 actuel, puis:

Télécharger : psycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exe de - ICI , puis exécutez ce qui suit dans un terminal:

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

Vous devrez peut-être également (re) créer un super utilisateur avec:

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

J'ai eu le même problème, je l'ai résolu de cette façon:

Réinstallez le package psycopg2 en utilisant pip (installé par défaut avec python 3)

Sous Linux:

pip désinstaller psycopg2

Confirmez avec (y) puis:

pip installer psycopg2

Sous Windows, j'ajoute le préfixe ('python -m') aux commandes ci-dessus. Je pense que le problème se produit lorsque vous modifiez la version de Python. (Même entre des versions mineures telles que Python 3.5 et 3.6).

4
JoDavid

Téléchargez la version compilée de psycopg2 à partir de ce lien https://github.com/jkehler/awslambda-psycopg2 . Comme psycopg2 est une bibliothèque C pour python, qui doit être compilée sur linux pour le faire fonctionner. L'instruction de compilation également donnée sur ce lien. Merci au https://github.com/jkehler .

3
Hrushikesh Patel

Cela m'arrive aussi dans le nouveau Ubuntu 18.04. Cela est dû à l'absence d'un fichier _psycopg.py dans /usr/local/lib/python3.7/site-packages/psycopg2.

Il est fixé par:

  1. supprimer l'ancien psycopg2 de votre machine pip3 uninstall psycopg2.
  2. téléchargez le nouveau pyscopg2 manuellement depuis la page officiellehttp://initd.org/psycopg/tarballs/PSYCOPG-2-7/psycopg2-2.7.7.tar.gz
  3. tar xvf psycopg2-2.7.7.tar.gz
  4. python setup.py build
  5. Sudo python setup.py install
2
Saray Chak

J'ai eu cela sous Linux en utilisant Python 2 parce que j'avais accidentellement réglé mon PYTHONPATH sur Python 3 bibliothèques, et il essayait de charger la version python3 de psycopg2. La solution consistait à unset PYTHONPATH.

1
sudo

J'utilise psycopg dans un travail de colle AWS, où il est plus difficile de suivre les instructions répertoriées dans les autres réponses.

Ce que j'ai fait, c'est d'installer psycopg2-binary dans un répertoire et Zip le contenu de ce répertoire:

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 *

J'ai ensuite copié psycopg2.Zip dans un compartiment S3 et je l'ai ajouté en tant que bibliothèque supplémentaire Python sous "Chemin de la bibliothèque Python" dans la tâche Glue Spark.

J'ai ensuite lancé le travail avec le script suivant pour vérifier si psycopg2 est présent (le fichier Zip sera téléchargé par Glue dans le répertoire dans lequel se trouve le script du travail)

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

J'ai appris que la plupart du temps, l'emballage WINDOWS ne va pas bien avec LAMBDA.

J'ai rencontré le même problème lors de l'exécution de LAMBDA avec le package tiers pscyopg2 Installé par WINDOWS.

Solution:

étape1>
J'ai installé psycopg2 Sous Linux.
Copié les répertoires psycopg2_binary-2.8.2.dist-info Et psycopg2 De Linux vers Windows.

étape2>
Avec la source *.py, Empaquetée avec les dépendances tierces copiées psycopg2 Dans les fenêtres vers le fichier *.Zip

étape3>
Téléchargez le fichier sur LAMBDA - Voilà, il s'exécute avec succès sans aucune erreur.

0
Deep

J'ai eu la même erreur sur Windows, cela a fonctionné pour moi: pip install -U psycopg2

J'ai fait installer une ancienne version, je dois l'avoir dépréciée

0
Ryan L