ImportError: No module named 'psycopg2._psycopg'
ImportError: No module named '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位)版本是python3.5
尤里卡!我把头发拔了 2 天,试图让它发挥作用。启蒙来自。简单地说,你可能像我一样安装了 psycopg2 x64 版本,没有意识到你的 python 版本是 32 位的。卸载当前的 psycopg2,然后:
下载:psycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exe 来自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
我在 Linux 中使用 Python 2 发生了这种情况,因为我不小心将我的 PYTHONPATH 设置为 Python 3 库,并且它正在尝试加载 python3 版本的 psycopg2。解决方案是 unset PYTHONPATH
.
从这里下载psycopg2的编译版本link https://github.com/jkehler/awslambda-psycopg2. As psycopg2 is C library for python, which need to be compiled on linux to make it work. The compile instruction also given on that link. Thanks to the https://github.com/jkehler.
我遇到了同样的问题,是这样解决的:
使用 pip
重新安装软件包 psycopg2
(默认安装 python 3)
在 Linux:
pip uninstall psycopg2
用 (y) 确认,然后:
pip install 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 uninstall psycopg2
。
- 从 official page http://initd.org/psycopg/tarballs/PSYCOPG-2-7/psycopg2-2.7.7.tar.gz
手动下载新的 pyscopg2
tar xvf psycopg2-2.7.7.tar.gz
python setup.py build
sudo python setup.py install
我了解到大多数情况下 WINDOWS 包装不适合 LAMBDA。
我遇到了同样的问题,而 运行 LAMBDA WINDOWS 安装了第 3 方 pscyopg2
包装。
解决方案:
第一步>
我在 Linux.
中安装了 psycopg2
将目录 psycopg2_binary-2.8.2.dist-info
和 psycopg2
从 Linux 复制到 windows.
步骤 2>
连同源代码 *.py
,与复制的第 3 方依赖项 psycopg2
一起打包到 windows 到 *.zip
文件
步骤 3>
将文件上传到 LAMBDA - 好了,它运行成功,没有任何错误。
我在 Windows 上遇到了同样的错误,这对我有用:
pip install -U psycopg2
我安装了一个旧版本,一定是折旧了
我在 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 *
然后我将 psycopg2.zip 复制到 S3 存储桶并将其作为额外的 Python 库添加到 Glue Spark 作业的 "Python library path" 下。
然后我使用以下脚本启动作业以验证 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()
对于 Mac python mycode.py migrate
修复了导入问题
对于 Python 3.7 上的 lambda 函数,我最终使用了这些线程中提到的 psycopg2-binary
库:
https://github.com/jkehler/awslambda-psycopg2/issues/51
pip3 install psycopg2-binary==2.8.3
来自这些链接的片段:
I ended up using a different library: psycopg2-binary in my requirement.txt file and it working fine now.
solved it by using psycopg2-binary==2.8.3
我在 Linux 使用 Python 3.7 时遇到过这种情况。是/usr/local/lib/python3.7/site-packages/psycopg2中少了一个文件_psycopg.cpython-37m-x86_64-linux-gnu.so造成的。
我从 https://github.com/jkehler/awslambda-psycopg2/tree/master/psycopg2-3.7 下载 _psycopg.cpython-37m-x86_64-linux-gnu.so,并将此文件复制到我的 anaconda 库中。
对于mac M1用户(也可以尝试其他用户),
pip uninstall psycogp2
然后
pip install psycopg2-binary
它适用于我的情况。
当我尝试导入 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位)版本是python3.5
尤里卡!我把头发拔了 2 天,试图让它发挥作用。启蒙来自
下载:psycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exe 来自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
我在 Linux 中使用 Python 2 发生了这种情况,因为我不小心将我的 PYTHONPATH 设置为 Python 3 库,并且它正在尝试加载 python3 版本的 psycopg2。解决方案是 unset PYTHONPATH
.
从这里下载psycopg2的编译版本link https://github.com/jkehler/awslambda-psycopg2. As psycopg2 is C library for python, which need to be compiled on linux to make it work. The compile instruction also given on that link. Thanks to the https://github.com/jkehler.
我遇到了同样的问题,是这样解决的:
使用 pip
重新安装软件包 psycopg2
(默认安装 python 3)
在 Linux:
pip uninstall psycopg2
用 (y) 确认,然后:
pip install 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 uninstall psycopg2
。 - 从 official page http://initd.org/psycopg/tarballs/PSYCOPG-2-7/psycopg2-2.7.7.tar.gz 手动下载新的 pyscopg2
tar xvf psycopg2-2.7.7.tar.gz
python setup.py build
sudo python setup.py install
我了解到大多数情况下 WINDOWS 包装不适合 LAMBDA。
我遇到了同样的问题,而 运行 LAMBDA WINDOWS 安装了第 3 方 pscyopg2
包装。
解决方案:
第一步>
我在 Linux.
中安装了 psycopg2
将目录 psycopg2_binary-2.8.2.dist-info
和 psycopg2
从 Linux 复制到 windows.
步骤 2>
连同源代码 *.py
,与复制的第 3 方依赖项 psycopg2
一起打包到 windows 到 *.zip
文件
步骤 3>
将文件上传到 LAMBDA - 好了,它运行成功,没有任何错误。
我在 Windows 上遇到了同样的错误,这对我有用: pip install -U psycopg2
我安装了一个旧版本,一定是折旧了
我在 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 *
然后我将 psycopg2.zip 复制到 S3 存储桶并将其作为额外的 Python 库添加到 Glue Spark 作业的 "Python library path" 下。
然后我使用以下脚本启动作业以验证 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()
对于 Mac python mycode.py migrate
修复了导入问题
对于 Python 3.7 上的 lambda 函数,我最终使用了这些线程中提到的 psycopg2-binary
库:
https://github.com/jkehler/awslambda-psycopg2/issues/51
pip3 install psycopg2-binary==2.8.3
来自这些链接的片段:
I ended up using a different library: psycopg2-binary in my requirement.txt file and it working fine now.
solved it by using psycopg2-binary==2.8.3
我在 Linux 使用 Python 3.7 时遇到过这种情况。是/usr/local/lib/python3.7/site-packages/psycopg2中少了一个文件_psycopg.cpython-37m-x86_64-linux-gnu.so造成的。 我从 https://github.com/jkehler/awslambda-psycopg2/tree/master/psycopg2-3.7 下载 _psycopg.cpython-37m-x86_64-linux-gnu.so,并将此文件复制到我的 anaconda 库中。
对于mac M1用户(也可以尝试其他用户),
pip uninstall psycogp2
然后
pip install psycopg2-binary
它适用于我的情况。