【问题标题】:PyCharm: ImportError when importing any module that imports sslPyCharm:导入任何导入 ssl 的模块时出现 ImportError
【发布时间】:2019-07-03 03:17:52
【问题描述】:

由于无法导入 ssl,我无法调试代码或运行 Python 控制台。我在使用我创建的两个 Anaconda 虚拟环境时会出现这种情况。

例如,当我尝试调试使用 boto3 的 Python 代码时,我看到以下错误:

C:\home\miniconda\envs\scw\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\pydevd.py" --multiproc --qt-support=auto --client 127.0.0.1 --port 57111 --file C:/home/git/onvif_interact/onvif_interact/notifications.py --config C:\home\data\pullpoint\camera_desk.ini
pydev debugger: process 22816 is connecting

Connected to pydev debugger (build 183.5429.31)
Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\pydevd.py", line 1741, in <module>
    main()
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\pydevd.py", line 1735, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\pydevd.py", line 1135, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/home/git/onvif_interact/onvif_interact/notifications.py", line 3, in <module>
    import boto3
  File "C:\home\miniconda\envs\scw\lib\site-packages\boto3\__init__.py", line 16, in <module>
    from boto3.session import Session
  File "C:\home\miniconda\envs\scw\lib\site-packages\boto3\session.py", line 17, in <module>
    import botocore.session
  File "C:\home\miniconda\envs\scw\lib\site-packages\botocore\session.py", line 30, in <module>
    import botocore.credentials
  File "C:\home\miniconda\envs\scw\lib\site-packages\botocore\credentials.py", line 42, in <module>
    from botocore.utils import InstanceMetadataFetcher, parse_key_val_file
  File "C:\home\miniconda\envs\scw\lib\site-packages\botocore\utils.py", line 31, in <module>
    import botocore.httpsession
  File "C:\home\miniconda\envs\scw\lib\site-packages\botocore\httpsession.py", line 7, in <module>
    from urllib3.util.ssl_ import (
ImportError: cannot import name 'ssl' from 'urllib3.util.ssl_' (C:\home\miniconda\envs\scw\lib\site-packages\urllib3\util\ssl_.py)

Process finished with exit code 1

当我尝试运行 Python 控制台时,我收到了类似的错误:

C:\home\miniconda\envs\scw\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\pydevconsole.py" --mode=client --port=57152
Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\pydevconsole.py", line 5, in <module>
    from _pydev_comm.rpc import make_rpc_client, start_rpc_server, start_rpc_server_and_make_client
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\_pydev_comm\rpc.py", line 4, in <module>
    from _pydev_comm.server import TSingleThreadedServer
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\pydev\_pydev_comm\server.py", line 4, in <module>
    from _shaded_thriftpy.server import TServer
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\third_party\thriftpy\_shaded_thriftpy\server.py", line 9, in <module>
    from _shaded_thriftpy.transport import (
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\third_party\thriftpy\_shaded_thriftpy\transport\__init__.py", line 57, in <module>
    from .sslsocket import TSSLSocket, TSSLServerSocket  # noqa
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.4\helpers\third_party\thriftpy\_shaded_thriftpy\transport\sslsocket.py", line 7, in <module>
    import ssl
  File "C:\home\miniconda\envs\scw\lib\ssl.py", line 98, in <module>
    import _ssl             # if we can't import it, let the error propagate
ImportError: DLL load failed: The specified procedure could not be found.
Process finished with exit code 1

可能相关的是我在 PyCharm 中创建了一个新的虚拟环境,当我尝试更新 pip 模块时发生以下与 SSL 相关的错误:

Collecting pip==19.0.1
  Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pip/
  Could not find a version that satisfies the requirement pip==19.0.1 (from versions: )
No matching distribution found for pip==19.0.1
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

【问题讨论】:

  • 顺便说一句,我已经用新安装的 Miniconda 替换了我的 Miniconda 安装,但我继续收到上述错误。我从 python.org 安装了 Python 3.7 并基于它创建了一个虚拟环境,但我没有收到上述错误,所以我的假设是这在某种程度上与 Miniconda 环境有关,尽管该环境直到今天都运行良好。接下来我将尝试安装一个完整的 Anaconda 环境,看看是否有什么不同。

标签: python ssl pycharm conda


【解决方案1】:

我最近在 PyCharm 上遇到了同样的问题。根据他们的forum 帖子,这是一个已知问题,将在 Pycharm 2019.1 的下一版本中修复。我发现解决这个问题的唯一方法是使用 python 3.6 创建一个环境。如果您使用该环境作为解释器,PyCharm 应该可以正常工作。希望这可以帮助。

【讨论】:

  • 具有相应修复的 EAP 版本已经是 available
  • 我已经安装了最新的 EAP 版本,但是使用这个版本并没有带来任何乐趣——在使用 Python 3.7.2 的 Anaconda 环境中我仍然遇到同样的问题。将 Python 降级到 3.6.8 版可以解决问题。
  • 感谢毛斯科!!你的回答很有帮助。
【解决方案2】:

我已经提到here,您可以继续使用带有 python 3.7 的 conda 环境。唯一的解决方法是复制/粘贴两个 dll 文件来解决Python 3.7 anaconda environment - import _ssl DLL load fail error 中提出的相同问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2014-08-01
    • 2017-05-13
    • 1970-01-01
    相关资源
    最近更新 更多