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造成的 它通过以下方式固定:
pip3卸载psycopg2
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