要从公司代理服务器后面安装Python软件包,有时必须向pip
添加选项,例如--proxy
或--cert
。
this question中说明了如何在PyCharm中指定代理,this answer中说明了如何向<{1}}调用中添加 any 选项。>
后者将允许我添加必需的pip
选项。不幸的是,这仅在手动安装软件包时有效,并且不能解决我拥有--cert
文件并希望PyCharm自动安装列出的软件包的情况。导致此错误:
在被'SSLError(SSLError(1,'[SSL:CERTIFICATE_VERIFY_FAILED])证书验证失败(_ssl)断开连接后,重试(Retry(total = 4,connect = None,read = None,redirect = None,status = None)) .c:833)'),)':/ simple / robotframework /
这意味着我需要向基础的requirements.txt
调用中添加一些内容(在我的情况下为pip
)。
问题::如何指定PyCharm将用于自动安装--cert
中指定的软件包的pip
选项?
答案 0 :(得分:2)
您可以下载公司防火墙插入的CA证书,并将其安装到pip的密钥库中。下面是我使用的过程,但是我敢肯定那些更擅长证书格式/操作的人可以改善它:
请注意:每当pip时,pip的cacerts.pem文件都会被覆盖 已升级,因此需要重新插入公司证书。
步骤1 。标识正确的密钥库。如果您使用的是虚拟环境,则pip激活时所使用的密钥库的位置应为C:\PATH\TO\VENV\Lib\site-packages\pip\_vendor\certifi\cacert.pem
注意:与我所处理的大多数密钥库不同(大多数是在试图使JetBrains产品在corpo防火墙后工作时),这是纯文本。 在第3步中对此有进一步的了解。
第2步。下载证书。使用Firefox(有许多方法可以执行此操作),请转至错误之前的URL(诸如https://pypi.org/simple/或https://pypi.python.org/simple/之类)。单击锁定>显示连接详细信息>更多信息。在“页面信息”窗口上,单击查看证书>详细信息选项卡。将顶级证书导出为.crt / .pem。单击返回到“常规”选项卡,在步骤3中可能需要。
第3步。通常,您可以只使用keytool -import -alias key-alias -file "C:\path\to\exported\key.der" -keystore "C:\Path\to\keystore\.PyCharm2018.3\system\tasks\cacerts"
之类的keytool命令,但是这样做时,会出现以下 keytool错误:java.security.KeyStoreException:无法识别的密钥库格式:null 。事实证明,您只需将在第2步中导出的纯文本证书直接复制到密钥库中即可。
您不需要包括任何标头信息,只需从----- BEGIN CERTIFICATE -----到----- END CERTIFICATE -----。但是,将来如果有人(您)必须再次查看此密钥库,可能会很有用,因此您可以从上述“常规”选项卡中复制它。