簡體   English   中英

在公司代理后面安裝 ibm_db 時 Errno 111 Connection denied (DB2 with Python3)

[英]Errno 111 Connection refused when installing ibm_db behind corporate proxy (DB2 with Python3)

我正在嘗試在我們的代理服務器后面的公司網絡中安裝ibm_db python package 即使使用--proxy開關(在我的情況下,這是連接到公司代理的本地 squid),我也會收到 ean 錯誤,導致 package 似乎通過執行 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設置為 env 變量,這似乎對他有用。

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>安裝它。 但這無濟於事,因為那里不包含依賴項。

我還沒有找到真正的解決方案,但是安裝了 package 的解決方法:

  1. 從 pypi.org 下載 python package

  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文件安裝 package:

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

現在安裝工作正常,因為為整個 python 環境設置了代理,而不僅僅是 pip。 但是,這不是最佳解決方案,因為我們必須在每次更新時都應用此解決方法,而是一個合適的短期解決方案,直到我們找到更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM