Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python3全局名称';SOL_套接字未定义_Python_Python 3.x_Python 3.3 - Fatal编程技术网

python3全局名称';SOL_套接字未定义

python3全局名称';SOL_套接字未定义,python,python-3.x,python-3.3,Python,Python 3.x,Python 3.3,当我使用gevent时,我不能使用请求,我的使用是否错误 from gevent import monkey; monkey.patch_all() import gevent, requests requests.get('https://haofly.net') 它会引发错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/pyt

当我使用
gevent
时,我不能使用
请求
,我的使用是否错误

from gevent import monkey; monkey.patch_all()
import gevent, requests
requests.get('https://haofly.net')
它会引发错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.3/site-packages/requests/api.py", line 70, in get
  return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python3.3/site-packages/requests/api.py", line 56, in request
  return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.3/site-packages/requests/sessions.py", line 475, in request
  resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.3/site-packages/requests/sessions.py", line 596, in send
  r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.3/site-packages/requests/adapters.py", line 423, in send
    timeout=timeout
  File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/connectionpool.py", line 595, in urlopen
    chunked=chunked)
File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/connectionpool.py", line 352, in _make_request
  self._validate_conn(conn)
File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/connectionpool.py", line 831, in _validate_conn
  conn.connect()
File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/connection.py", line 289, in connect
  ssl_version=resolved_ssl_version)
File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/util/ssl_.py", line 308, in ssl_wrap_socket
  return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/local/lib/python3.3/site-packages/gevent/_ssl3.py", line 60, in wrap_socket
  _context=self)
File "/usr/local/lib/python3.3/site-packages/gevent/_ssl3.py", line 143, in __init__
  if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM:
NameError: global name 'SOL_SOCKET' is not defined

安装Python 3.5版本可以解决此问题。

这确实是gevent中的一个bug。它正在尝试从
ssl
库导入

该特定常量恰好被导入到
ssl
库中,因为该库使用它。但它之所以存在,是因为需要将它导入到
ssl
模块中。Python3.3.4中包含了对该错误的修复,您有版本3.3.3,因此在
ssl
模块中也没有该特定常量

您可以通过从socket import SOL\u socket添加
,从而在
gevent/\u ssl3.py
中键入
(位于系统上的
/usr/local/lib/python3.3/site packages
目录中)来修复它。也可以升级到Python 3.3.4或更高版本


我已将此作为
gevent
项目提交。

有趣。该名称将在
ssl
模块中找到并导入。我看到支持Python 3.3;您安装了什么版本的openssl?@MartijnPieters您指的是linux软件包openssl?我的openssl是openssl-1.0.1e-48.el6_8.1.x86_64,CentOS 6.8问题在于,ssl导入Solu套接字的
显然无法安装。为什么我不完全理解。也许您在某处有一个影子
ssl
模块<代码>导入ssl;打印(ssl.\uuuu文件)
应打印系统位置,例如。@MartijnPieters when
导入ssl;打印(ssl.\uuuu文件)
,它表示位置,但是
cat/usr/local/lib/python3.3/ssl.py | grep SOL\u SOCKET
不返回任何内容,在我的ssl.py中没有
SQL\u SOCKET
,这是怎么回事happend@MartijnPieters哦,我发现我的3.3安装包包含ssl.py,但它不包含
solu套接字
,但是我从
http://www.python.org/ftp/python/3.3.3/Python-3.3.3.tar.xz
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.3/site-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python3.3/site-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.3/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.3/site-packages/requests/sessions.py", line 596, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.3/site-packages/requests/adapters.py", line 423, in send
    timeout=timeout
  File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/connectionpool.py", line 595, in urlopen
    chunked=chunked)
  File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/connectionpool.py", line 352, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/connectionpool.py", line 831, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/connection.py", line 289, in connect
    ssl_version=resolved_ssl_version)
  File "/usr/local/lib/python3.3/site-packages/requests/packages/urllib3/util/ssl_.py", line 308, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/local/lib/python3.3/ssl.py", line 245, in wrap_socket
    _context=self)
  File "/usr/local/lib/python3.3/ssl.py", line 335, in __init__
    server_hostname)
TypeError: _wrap_socket() argument 1 must be _socket.socket, not SSLSocket