Python 3.x ImportError:没有名为';psycopg2._psycopg';

Python 3.x ImportError:没有名为';psycopg2._psycopg';,python-3.x,psycopg2,importerror,Python 3.x,Psycopg2,Importerror,当我尝试导入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-packag

当我尝试导入
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'
回溯(最近一次呼叫最后一次):
文件“D:/Desktop/learn/python/webcatch/appserver/testpgsql.py”,第2行,在
导入psycopg2
文件“D:/Desktop/learn/python/webcatch/appserver/webcatch/lib/site packages/psycopg2-2.6.1-py3.5-win32.egg/psycopg2/___;u init.py”,第50行,in
从psycopg2.\u psycopg导入二进制、数字、字符串、日期时间、ROWID
ImportError:没有名为“psycopg2.\u psycopg”的模块
我怎样才能解决它?
我的平台是win10(64),版本是python 3.5!我花了两天的时间把头发拔了出来,想让它发挥作用。启蒙来自于。简单地说,您可能像我一样安装了psycopg2 x64版本,但没有意识到您的python版本是32位的。Unistall当前的psycopg2,然后:

从下载: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
您可能还需要(重新)创建超级用户:

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

我在Linux中使用Python2时发生了这种情况,因为我不小心将PYTHONPATH设置为python3库,而它正试图加载python3版本的psycopg2。解决方案是
取消PYTHONPATH的设置

从这个链接下载psycopg2的编译版本。因为psycopg2是python的C库,需要在linux上编译才能工作。编译指令也在该链接上给出。多亏了。

我也遇到了同样的问题,通过以下方式解决了它:

使用
pip
重新安装程序包
psycopg2
(默认情况下与python 3一起安装)

在Linux上:

pip卸载psycopg2

用(y)确认,然后:

pip安装psycopg2

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

在新的Ubuntu 18.04中,我也会遇到这种情况。这是由于/usr/local/lib/python3.7/site-packages/psycopg2中缺少一个文件_psycopg.py造成的

它通过以下方式固定:

  • 从计算机中删除旧的psycopg2
    pip3卸载psycopg2
  • 从中手动下载新的pyscopg2
  • tar xvf psycopg2-2.7.7.tar.gz
  • python setup.py build
  • sudo python setup.py安装

  • 我开始知道,大多数情况下,WINDOWS的包装并不适合LAMBDA

    我在使用WINDOWS安装的第三方软件包运行LAMBDA时遇到了同样的问题

    解决方案: 步骤1>
    我在Linux中安装了psycopg2。
    将目录
    psycopg2\u binary-2.8.2.dist info
    psycopg2
    从Linux复制到windows

    步骤2>
    与源
    *.py
    一起打包,并将windows中的第三方依赖项
    psycopg2
    复制到
    *.zip
    文件中

    步骤3>

    将文件上载到LAMBDA-在这里,它成功运行,没有任何错误。

    我在Windows上也有同样的错误,这对我来说很有用: pip安装-U psycopg2


    我安装了一个较旧的版本,一定贬值了

    我在AWS胶水作业中使用了psycopg,在这里很难遵循其他答案中列出的说明

    我所做的是将psycopg2二进制文件安装到一个目录中,并压缩该目录的内容:

    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存储桶中,并将其作为额外的Python库添加到Glue Spark作业中的“Python库路径”下

    然后,我使用以下脚本启动了作业,以验证是否存在psycopg2(zip文件将通过Glue下载到作业脚本所在的目录中)


    对于Mac
    python mycode.py migrate
    修复了python 3.7上lambda函数的导入问题,我最终使用了以下线程中提到的
    psycopg2 binary
    库:

    这些链接中的代码片段:

    我最终使用了另一个库:requirement.txt文件中的psycopg2二进制文件,它现在运行良好。


    使用psycopg2 binary==2.8.3解决了这个问题

    您是如何安装的
    psycopg2
    ?当我使用
    pip install psycopg2
    时,它没有成功安装,因此它可能是特定于它的安装方式。我按照此步骤在我的计算机上安装它。您可以在python控制台中检查
    导入psycopg2
    吗?然后检查
    sys.path
    是否可以找到模块路径?我只看到了_psycopg.cp35-win _amd64.py和_psycopg1.py,但没有psycopg2。非常感谢。这最终解决了一天半的挫折。我只需要在32位psycopg2版本上运行“easy_install”。我不必运行makemigrations/migrate之类的东西。干杯我使用的是Python3.6,我刚从下载了.exe,并以正常的widows方式安装了它。。。由于我使用pip而不是easy_Install,这不仅与windows或cpu arch相关,还取决于用于编译包的python版本,即使使用另一版本的python编译psycopg2,也可能会遇到此问题。刚用3.6编译,在3.7上运行,遇到了这个问题:/@MattiaProcopio你必须根据你所使用的安装正确的版本,看起来3.7还没有得到stickpeople.com开发者的支持。我不认为OP使用的是AWS Lambda,但如果你是的话,这绝对是正确的方法!谢谢我们可以pip安装吗?这无疑帮助了我,我最近从Python 3.7切换到了3.8。这是一个很棒的解决方案!今天我刚从Python3.8切换到Python3.9,我遇到了这个问题,这对我来说很有效!
    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()
    
    pip3 install psycopg2-binary==2.8.3