ImportError:没有名为'psycopg2._psycopg'的模块

sap*_*ppy 10 psycopg2 importerror python-3.x

当我尝试导入时,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'
Run Code Online (Sandbox Code Playgroud)

我该如何解决?我的平台是win10(64),版本是python 3.5

Mat*_*ber 14

找到了!我把头发拉了两天试图让它发挥作用.启蒙来自这个SO问题.简单地说,你可能像我一样安装了psycopg2 x64版本,没有意识到你的python版本是32位.取消当前的psycopg2,然后:

HERE 下载:psycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exe,然后在终端中运行以下命令:

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
Run Code Online (Sandbox Code Playgroud)

您可能还需要(重新)创建超级用户:

C:\path\to\project> python manage.py createsuperuser
Run Code Online (Sandbox Code Playgroud)

  • 这不仅与 windows 或 cpu arch 相关,而且还取决于用于编译包的 python 版本,即使 psycopg2 是使用另一个版本的 python 编译的,您也可能会遇到此问题。刚刚用 3.6 编译并在 3.7 上运行并遇到了这个问题:/ (2认同)

Hru*_*tel 9

从此链接https://github.com/jkehler/awslambda-psycopg2下载 psycopg2 的编译版本。由于 psycopg2 是 python 的 C 库,需要在 linux 上编译才能运行。该链接上也给出了编译指令。感谢https://github.com/jkehler


JoD*_*vid 9

我遇到了同样的问题,以这种方式解决了它:

psycopg2使用pip(默认安装python 3)重新安装包

在 Linux 上:

pip卸载psycopg2

用 (y) 确认,然后:

pip 安装 psycopg2

在 Windows 上,我将前缀添加('python -m')到上述命令中。我认为当您更改 Python 版本时会出现问题。(即使在 Python 3.5 和 3.6 等次要版本之间)。


Sar*_*hak 6

在新的 Ubuntu 18.04 中,这也发生在我身上。这是由于/usr/local/lib/python3.7/site-packages/psycopg2中缺少一个文件_psycopg.py引起的。

它是通过以下方式固定的:

  1. 从您的机器上删除旧的 psycopg2 pip3 uninstall psycopg2
  2. 从官方页面 手动下载新的 pyscopg2 http://initd.org/psycopg/tarballs/PSYCOPG-2-7/psycopg2-2.7.7.ta ​​r.gz
  3. tar xvf psycopg2-2.7.7.tar.gz
  4. python setup.py build
  5. sudo python setup.py install


Vzz*_*arr 6

我在 AWS Glue 作业中使用了 psycopg,其中更难遵循其他答案中列出的说明。

我所做的是将 psycopg2-binary 安装到一个目录中并压缩该目录的内容:

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 *
Run Code Online (Sandbox Code Playgroud)

然后,我将 psycopg2.zip 复制到 S3 存储桶,并将其添加为 Glue Spark 作业中“Python 库路径”下的额外 Python 库。

然后我使用以下脚本启动作业以验证是否存在 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()
Run Code Online (Sandbox Code Playgroud)