Python';“s请求”;缺少SOCKS支持的依赖项“;从终端使用插座5时

Python';“s请求”;缺少SOCKS支持的依赖项“;从终端使用插座5时,python,python-2.7,python-requests,socks,urllib3,Python,Python 2.7,Python Requests,Socks,Urllib3,我试图使用依赖于Python请求的包与Python 2.7 shell中的API交互。问题是远程地址被我的网络(大学图书馆)阻止了 对于API,我执行以下操作: ~$ ssh -D 8080 name@myserver.com 然后,在新终端中,在本地计算机中: ~$ export http_proxy=socks5://127.0.0.1:8080 https_proxy=socks5://127.0.0.1:8080 然后我在Python控制台中运行程序,但失败: ~$ python &

我试图使用依赖于Python请求的包与Python 2.7 shell中的API交互。问题是远程地址被我的网络(大学图书馆)阻止了

对于API,我执行以下操作:

~$ ssh -D 8080 name@myserver.com
然后,在新终端中,在本地计算机中:

~$ export http_proxy=socks5://127.0.0.1:8080 https_proxy=socks5://127.0.0.1:8080
然后我在Python控制台中运行程序,但失败:

~$ python
>>> import myscript
>>> id = '1213'
>>> token = 'jd87jd9'
>>> connect(id,token)

File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 518, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 370, in send
    conn = self.get_connection(request.url, proxies)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 273, in get_connection
    proxy_manager = self.proxy_manager_for(proxy)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 169, in proxy_manager_for
    **proxy_kwargs
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 43, in SOCKSProxyManager
    raise InvalidSchema("Missing dependencies for SOCKS support.")
requests.exceptions.InvalidSchema: Missing dependencies for SOCKS support.
本节选自:

现在问题似乎起源于urllib3的SocksProxy管理器

因此,我了解到,如果您已经安装或执行了pip安装urllib3[socks],则可以将SOCKSProxyManager与SOCKS5一起使用

唉,我用袜子尝试了PySocks和urllib3,但都没有成功

有没有其他解决办法

编辑:

我还尝试了pip安装请求[socks](即带有socks支持的requests 2.10.0),我得到了以下信息:

  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 467, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='api-server.com', port=443): Max retries exceeded with url: /auth (Caused by NewConnectionError('<requests.packages.urllib3.contrib.socks.SOCKSHTTPSConnection object at 0x95c7ccc>: Failed to establish a new connection: SOCKS5 proxy server sent invalid data',))
文件“/home/username/.virtualenvs/venv/local/lib/python2.7/site packages/requests/adapters.py”,发送中第467行
raise ConnectionError(e,请求=请求)
requests.exceptions.ConnectionError:SockshttpConnectionPool(host='api-server.com',port=443):url:/auth超过最大重试次数(由NewConnectionError引起(':未能建立新连接:SOCKS5代理服务器发送了无效数据',))

我将
请求[socks]>=2.10.0
添加到my requirements.txt,更新了我的
https\u proxy
env变量,并遇到了上述错误。在重置
https\u proxy
env变量后,我尝试了一次常规的
pip安装请求[socks]
,并安装了
PySocks
。我不确定为什么pip安装-Ur requirements.txt第一次安装PySocks失败

之后,我可以使用socks代理在python中发出请求


看起来您的socks服务器没有运行。我想看看你或你的管理员是否可以查看日志,看看机器在抱怨什么。

我对conda和requests 2.11也有同样的问题(我在一个公司代理后面的Ubuntu虚拟机中工作)

帮助了我。我更改了我的环境变量
all\u proxy
(最初设置为SOCK proxy
socks://....
)转换到my.bashrc文件中的https版本:

export all\u proxy=“https://:/”


现在它可以工作了。

只需取消设置您的
all\u proxy
环境变量,就可以了。您也可以在github中参考这一点


在Ubuntu上,您可以使用以下命令取消设置所有代理并重新启动终端,我在执行一个简单的
pip安装-U pip
时也遇到了这个问题,但我从您的问题中找到的信息帮助我解决了这个问题。我在MacOSX上

正如您所指出的,从
请求中
包试图做到这一点:

try:
    from .packages.urllib3.contrib.socks import SOCKSProxyManager
except ImportError:
    def SOCKSProxyManager(*args, **kwargs):
        raise InvalidSchema("Missing dependencies for SOCKS support.")
因此,寻找正确的答案似乎是明智的。它似乎位于urllib3中的“contrib”模块中,默认情况下未与urllib3一起安装。该模块的文档字符串表示:

This module contains provisional support for SOCKS proxies from within
urllib3. This module supports SOCKS4 (specifically the SOCKS4A variant) and
SOCKS5. To enable its functionality, either install PySocks or install this
module with the ``socks`` extra.
的说明中说明了有关setuptools extras的内容:

6. Install a package with setuptools extras.

$ pip install SomePackage[PDF]
$ pip install git+https://git.repo/some_pkg.git#egg=SomePackage[PDF]
$ pip install SomePackage[PDF]==3.0
$ pip install -e .[PDF]==3.0  # editable project in current directory
所以我按照指示做了:

$ pip install 'urllib3[socks]'
然后我继续使用
pip安装-U pip
,这是我应该做的,现在它可以工作了


我想知道有多少人被方括号欺骗了,因为Bash和其他shell通常将其视为特殊字符,需要对其进行转义才能到达调用的程序(在本例中为pip)。

这意味着请求使用socks作为代理,而socks没有安装

快跑
pip安装pysocks

几分钟前我遇到了同样的错误。然后通过pip重新安装了请求[socks]
袜子似乎少了一部分,那就是win-inet\u pton。Pip安装了它,问题就解决了。

我的环境是Ubuntu 16.4 LTS和Python3.5.2 我使用pip3安装libs也遇到了同样的问题。因此,我使用命令
unset ALL_PROXY
来解决这个问题,它可以正常工作

附言:
使用
printenv|grep-i proxy
显示代理信息。

在Ubuntu中可以运行:

unset all\u proxy&&unset all\u proxy

在ubuntu中,我执行以下命令:

# Unset socks proxy
unset all_proxy    
unset ALL_PROXY
# Install missing dependencies:
pip install pysocks
# Reset proxy
source ~/.bashrc

我使用了上述所有方法,但只有这种方法对我有效:

set | grep -i all_proxy
它返回:

ALL_PROXY=socks://127.0.0.1:1080/
all_proxy=socks://127.0.0.1:1080/
然后,我做了这个:

export all_proxy=""

最后,它没有再次出现错误。

在debian 10中,Python 3:

pip3 install pysocks

我遇到了同样的问题,在那里得到了错误
缺少SOCKS支持的依赖项。
与Anaconda Python 3.7

由于
conda
命令工作正常,我用
conda安装pysocks
命令安装了
pysocks


这解决了问题。

您必须在python
请求中添加socks支持
库:

pip install requests[socks]

在报告了一个问题后得到了相同的错误,
pysocks
将不会被
请求[socks]>=0.23.0
要求拉取

我可以(深奥地)通过删除
requests>=0.23.0
要求来修复它,我在相同的
requirements.txt
中也有此要求

在Debian上运行Python3.7,报告错误的用户在Ubuntu上运行Python3.6

补丁之前
$cat requirements.txt
请求>=2.23.0
请求[socks]>=2.23.0
$python3-m venv venv
$ . venv/bin/激活
(venv)$pip——无缓存目录安装-r requirements.txt
收集请求>=2.23.0(来自-r requirements.txt(第1行))
正在下载https://files.pythonhosted.org/packages/45/1e/0c169c6a5381e241ba7404532c16a21d86ab872c9bed8bdcd4c423954103/requests-2.24.0-py2.py3-none-any.whl (61kB)
100% |████████████████████████████████| 71kB 202kB/s
收集urllib3=1.25.0,!=1.25.1,=1.21.1(来自请求>=2.23.0->-r requirements.txt(第1行))
正在下载https://files.pythonhosted.org/packages/9f/f0/a3
pip install requests[socks]
diff --git a/sauron/requirements.txt b/sauron/requirements.txt
index a0c901b..f38d18f 100644
--- a/sauron/requirements.txt
+++ b/sauron/requirements.txt
@@ -1,2 +1 @@
-requests>=2.23.0
 requests[socks]>=2.23.0