Errno 111 在企业代理后面安装 ibm_db 时连接被拒绝(带有 Python3 的 DB2)

问题描述 投票:0回答:2

我正在尝试在代理服务器后面的公司网络中安装

ibm_db
python 包。即使使用
--proxy
开关(在我的例子中,它是连接到公司代理的本地鱿鱼),我也会收到一个错误,因为该包似乎通过执行 python 代码来下载依赖项:

$ pip3 install --proxy "http://127.0.0.1:3128" ibm_db
Collecting ibm_db
  Using cached ibm_db-3.0.3.tar.gz (794 kB)
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-cd295_i4/ibm-db/setup.py'"'"'; __file__='"'"'/tmp/pip-install-cd295_i4/ibm-db/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-cd295_i4/ibm-db/pip-egg-info
         cwd: /tmp/pip-install-cd295_i4/ibm-db/
    Complete output (44 lines):
    Detected 64-bit Python
    Downloading https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxx64_odbc_cli.tar.gz
    Traceback (most recent call last):
      File "/usr/lib/python3.8/urllib/request.py", line 1350, in do_open
        h.request(req.get_method(), req.selector, req.data, headers,
      File "/usr/lib/python3.8/http/client.py", line 1255, in request
        self._send_request(method, url, body, headers, encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1301, in _send_request
        self.endheaders(body, encode_chunked=encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1250, in endheaders
        self._send_output(message_body, encode_chunked=encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1010, in _send_output
        self.send(msg)
      File "/usr/lib/python3.8/http/client.py", line 950, in send
        self.connect()
      File "/usr/lib/python3.8/http/client.py", line 1417, in connect
        super().connect()
      File "/usr/lib/python3.8/http/client.py", line 921, in connect
        self.sock = self._create_connection(
      File "/usr/lib/python3.8/socket.py", line 808, in create_connection
        raise err
      File "/usr/lib/python3.8/socket.py", line 796, in create_connection
        sock.connect(sa)
    ConnectionRefusedError: [Errno 111] Connection refused

我猜

proxy
开关不会转发到内部的 python 调用。 2018 年的一个旧问题 建议手动下载它并将
IBM_DB_HOME
设置为环境变量,这似乎对他有用。

export IBM_DB_HOME=/home/myuser/Downloads/db2_py/

现在我又遇到了另一个错误:

$ pip3 install --proxy "http://127.0.0.1:3128" ibm_db
Collecting ibm_db
  Using cached ibm_db-3.0.3.tar.gz (794 kB)
ERROR: Files/directories not found in /tmp/pip-install-a0t600_t/ibm-db/pip-egg-info

似乎还需要一些额外的文件。我还尝试从 pypi.org 下载存档并使用

pip3 install <path-to-downloaded-archive>
安装它。但这没有帮助,因为依赖项不包含在那里。

python proxy pip db2
2个回答
1
投票

我还没有找到真正的解决方案,但有一个解决方法来安装软件包:

  1. 从 pypi.org 下载 python 包

  2. 提取它

  3. 在提取的存档中,打开

    setup.py
    并打开
    setup.py

  4. PACKAGE = 'ibm_db'
    之前,插入以下行,其中
    127.0.0.1:3128
    是您的代理服务器:

    os.environ['http_proxy'] = 'http://127.0.0.1:3128/'
    os.environ['https_proxy'] = os.environ['http_proxy']
    os.environ['HTTP_PROXY'] = os.environ['http_proxy']
    os.environ['HTTPS_PROXY'] = os.environ['http_proxy']
    
  5. 安装带有操作的

    setup.py
    文件的包:

    $ pip3 install --proxy "http://127.0.0.1:3128" /home/myuser/Downloads/ibm_db2_extracted/ibm_db-3.0.3/
    

现在安装可以工作了,因为代理是为整个 python 环境设置的,而不仅仅是 pip。但是,这不是最佳解决方案,因为我们必须在每次更新时应用此解决方法,但这是一个合适的短期解决方案,直到我们找到更好的解决方案。


0
投票

在 ubuntu 中,您可以在终端中运行以下命令

unset ftp_proxy FTP_PROXY
unset https_proxy HTTP_PROXY
unset http_proxy HTTPS_PROXY
unset all_proxy ALL_PROXY
unset no_proxy NO_PROXY
© www.soinside.com 2019 - 2024. All rights reserved.