关于python:无法安装psycopg2(pip install psycopg2)

Unable to install psycopg2 (pip install psycopg2)

我正在使用MAC和python版本2.7.14

1
2
3
4
Collecting psycopg2
  Could not fetch URL https://pypi.python.org/simple/psycopg2/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661) - skipping
  Could not find a version that satisfies the requirement psycopg2 (from versions: )
No matching distribution found for psycopg2


尝试一下:

1
pip install psycopg2-binary


您正在使用的旧版Python没有最安全的TLS实施,您需要对其进行升级。否则,您将无法从PyPI " pip install "软件包。

1)要检查您的Python解释器的TLS版本,请安装" requests "软件包并运行命令。例如,对于Python 2:

1
2
3
python2 -m pip install --upgrade requests
python2 -c"import requests;
print(requests.get('https://www.howsmyssl.com/a/check',verify=False).json()['tls_version'])"

或Python 3:

1
2
3
python3 -m pip install --upgrade requests
python3 -c"import requests;
print(requests.get('https://www.howsmyssl.com/a/check',verify=False).json()['tls_version'])"

如果看到" TLS 1.2 ",则说明程序的TLS是最新的。如果看到" TLS 1.0 "或\\ tlsv1警报协议版本\\之类的错误,则必须升级。

2)Python的TLS实施在macOS上落后的原因是Python继续使用OpenSSL,Apple已停止在macOS上更新。在接下来的一年中,Python包装管理局团队将研究将pip移植到苹果自己的" SecureTransport"库中,以替代OpenSSL的做法,该库将允许旧的Python解释器仅将现代TLS与pip一起使用。""这是一笔不小的努力," Stufft写道,""我不确定这样做是否会完成。"

从长远来看,如果Python解释器本身未在macOS和Windows等平台上未使用OpenSSL的平台上使用OpenSSL,则它本身很容易跟上TLS版本。 Cory Benfield和Christian Heimes建议重新设计标准库的TLS接口,以使其更容易与平台本地TLS实现交换OpenSSL。


*我使用Process Monitor进行了跟踪。
D:\\\\\\\\ Anaconda3 \\\\\\\\ DLLs_ssl.pyd搜索OpenSSL DLL,但是在错误/当前位置!
由于找不到它们,因此搜索到C:\\\\\\\\ Windows \\\\\\\\ System32,在该目录中,我们具有由其他应用程序安装的相同DLL,但版本不同。

Anaconda3提供的DLL位于以下位置:
D:\\\\\\\\ Anaconda3 \\\\\\\\ Library \\\\\\\\ bin

分辨率:

我的解决方法:
我已复制以下文件

libcrypto-1_1-x64。*
libssl-1_1-x64。*
从D:\\\\\\\\ Anaconda3 \\\\\\\\ Library \\\\\\\\ bin到D:\\\\\\\\ Anaconda3 \\\\\\\\\\ DLLs。


我遇到了这个问题,在这里成功地提出了以下问题:

无法使psycopg2正常工作,但已正确安装。 Mac OS

[为您节省点击时间]

我已经安装了anaconda2。安装将我的路径更新为包含/ anaconda / bin。

然后使用导航器安装pyscopg2。现在,我可以在shebang中使用它,并且我的脚本可以正常执行,并且我可以导入该模块。

1
2
3
4
5
6
7
8
9
10
11
12
Gurmokhs-MBP:rest Gurmokh$ python
Python 2.7.12 |Anaconda 4.2.0 (x86_64)| (default, Jul  2 2016, 17:43:17)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)] on darwin
Type"help","copyright","credits" or"license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import psycopg2
if psycopg2.connect("dbname='postgres' user='postgres' host='localhost'"):
...     print"connection made"
...
connection made
>>>