Python中的SSL模块无法使用 - QGIS

4
以下错误似乎非常普遍:
C:\Program Files\QGIS 3.10\apps\Python37>python -m pip install doesnotmatterwhatIputhere
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

我看到的大多数解决方案都假定涉及到Anaconda或某种sudo、yum、brew等。但是我(这次)正在使用在Windows 10上的QGIS解释器,所以上述方法都不适用。
在同一台计算机上,我安装了C:\Python37中的标准Python版本,它从未出现任何问题。然而,我尝试的OSGeo4W64版本也出现了同样的错误。
我将 C:\Program Files\QGIS 3.10\apps\Python37 (以及 \Scripts\Lib)放入我的PATH变量中,但没有用 - 这是我能想到的与Anaconda“解决方案”的最接近的模拟方式。结果仍然是相同的错误。
我看到了很多关于这个问题的帖子。其中许多根本没有答案,那些有答案的看起来似乎都走了Anaconda的路线。那么我们这些讨厌蛇的QGIS用户该怎么办?

你的CPython是从哪里获取的?听起来好像没有构建SSL/TLS支持。在Linux上,如果我编译一个没有安装libssl-dev或openssl-devel(分别为基于Debian或Redhat)的CPython,我会看到类似的模糊情况。 - dstromberg
1
QGIS自带Python解释器。可从https://www.python.org/downloads/下载独立版本(可用)。 - CNIDog
4个回答

9

我最终解决问题的方法在这里找到了: https://bugs.python.org/issue39344

确保 libcrypto-1_1-x64.dlllibssl-1_1-x64.dll 文件与您的 _ssl.pyd 文件在同一个目录中。

这些文件可以在 C:\Program Files\QGIS 3.x\bin 文件夹中找到,需要将它们复制到 C:\Program Files\QGIS 3.x\apps\Python3x\DLLs 文件夹中。


这个解决方案适用于我在管理员权限下运行QGIS 3.26.3的OSGeo4W shell。然后我可以运行'python -m pip...'来安装我需要的内容。在之前的版本中,我可以将库复制到QGIS 3.x \ apps \ Python3x \ Scripts文件夹中,其中存在_ssl.pyd,但是更新的QGIS将其放置在如上所示的DLLs文件夹中。我有时不得不删除部署副本(例如从QGIS Python创建的venv)的库,因为会出现运行时不兼容性。 - smalers
Qgis版本2.28.13仍然存在这个问题。我建议复制所有*.dll文件。例如,sqlite.sql也缺失了。 - Stefan

5
最终,我找到了一个解决方案,安装适用于Windows的openssl,适用于所有的Qgis安装。如果您在计算机上安装了openssl,并尝试从Qgis的Python版本中导入ssl,则可以尝试一下。请参考以下链接:https://slproweb.com/products/Win32OpenSSL.html
如下图所示: enter image description here

我猜这是一个半功能性的解决方法,但它需要在安装包中包含轮子。有点麻烦。QGIS显然没有太多关于报告类似这样的重要问题的论坛。 - CNIDog

2

尝试使用OSGeo4W Shell安装Python包(需要安装OSGeo4W)


对我有用,谢谢...以管理员权限执行OSGeo4W Shell,解决“可写”问题。 - tayyab

1
我通过安装32位版本的OSGeo4W来解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接