CNTLMでプロキシの背後でPIPを使用する


279

職場でプロキシの背後にあるpipを使用しようとしています。

この投稿の回答の1つは、CNTLMの使用を提案しています。私はこの別の投稿に従ってそれをインストールして設定しcntlm.exe -c cntlm.ini -I -M http://google.comましたが、実行するとエラーが発生しましたConnection to proxy failed, bailing out

私も試しましたpip install -–proxy=user:pass@localhost:3128(デフォルトのCNTLMポート)が発生しましたCannot fetch index base URL http://pypi.python.org/simple/。明らかに、プロキシに問題があります。

CNTLMが正しく設定されているかどうか、またはこれを完全に回避する別の方法があるかどうかをより明確に確認する方法を知っている人はいますか?ここでhttp_proxy説明するように環境変数を設定することもできますが、どの資格情報を入力すればよいかわかりません。cntlm.ini


2
プロキシのIPアドレスとポート番号を確認し、それに応じてcntlm.iniに設定する必要があります(プロキシのユーザー名とパスワードがある場合は、プロキシのユーザー名とパスワード)
number5

2
CNTLMのセットアップ方法と使用方法についてブログを書きました。投稿はUbuntuとRailsをインストールするためのものですが、プロセスは同じだと思います。編集:Windows用のCNTLMのセットアップ方法に関するこの記事を読んでください。基本的には、Ubuntuバージョンと同じです。HTH。
Annie Lagang、2013年

回答:


74

Windows用のCNTLMを設定するには、この記事に従ってください。Ubuntuについては、私のブログ投稿をご覧ください

編集:

基本的に、任意のプラットフォームでCNTLMを使用するには、親プロキシのプロキシとして使用する前に、ユーザー名とハッシュ化パスワードを設定する必要がありますhttp://127.0.0.1:3128

  1. 設定を編集し、ドメイン、ユーザー名、パスワード、親プロキシなどの重要な情報を追加します。

  2. ハッシュ化されたパスワードを生成します。

    ウィンドウズ cntlm –c cntlm.ini –H

    Ubuntu / Linux cntlm -v -H -c /etc/cntlm.conf

  3. プレーンテキストのパスワードを構成から削除し、生成されたパスワードに置き換えます。

機能しているかどうかを確認するには:

ウィンドウズ cntlm –M http://www.google.com

Ubuntu / Linux sudo cntlm -M http://www.google.com/

詳細な手順については、上記のリンクを参照してください。

更新:

完全を期すために、最近、WindowsでCNTLMを構成して使用することができました。Kindle for PCの同期プロセス中に問題が発生しました。プロキシが原因であり、CNTLM for Windowsをインストールして構成することで問題が解決しました。詳細については、私の記事を参照しください。


このガイドで問題が解決しない場合--trusted-host pypi.python.orgは、コマンドラインオプションを指定してpipを実行してみてください。
Petr

1
これに追加したいのは、企業環境内のWindowsまたはMacで実際にcntlmを動作させることができなかったことですが、WindowsマシンにFiddlerをインストールし、プロキシとして使用することで問題が解決しました。
Dean Meehan

267

Ubuntuでは、プロキシオプションを広告どおりに機能させることができなかったため、次のコマンドは機能しませんでした

sudo pip --proxy http://web-proxy.mydomain.com install somepackage

しかし、https_proxy環境変数をエクスポートすると(そうではhttps_proxyないことに注意http_proxy)、トリックが行われました。

export https_proxy=http://web-proxy.mydomain.com

その後

sudo -E pip install somepackage

1
https_proxyの設定は、Mac OS Xでも機能します。
Bharadwaj Srigiriraju 2013年

4
ここでも同じですが、-proxyは機能しませんでした。http_proxyとhttps_proxyの両方を指定する必要がありました(corpファイアウォールの背後にあるDebian)
marc.guenther

34
含むいただきありがとうござい-Esudoのプログラムが私のENVが表示されない理由を私は疑問に思うとき常に私をスローし、コマンドを実行します。
AndyC 2014年

11
sudoに追加された-Eは私にトリックをもたらしました。以前に設定した環境変数「http_proxy」を保持します。ありがとう!
imagineerThat

7
pip --proxy = someproxy-url:port install some-packageは、Win8.1のpip 6.1.1で動作しました
zenpoy

96

Windowsでは設定を忘れないでください

SET HTTPS_PROXY=<proxyHost>:<proxyPort>

私が設定する必要があったもの

pip install pep8

fedoraでも 'export http_proxy = <proxy_host>:<port>'で動作します
Damien

5
これは私にとってはうまくいきましたが、SET HTTPS_PROXY = ht tps:// user:pass @ addr:port [stackoverflowが文字化けしないようにするために追加しなければならないスペースを差し引いた形式]でのみ使用でき、パスワードの特殊文字を置き換える必要がありました%nn形式の16進数
Seth

これでうまくいきました。以前、私はやっていた:SET HTTPS_PROXY=username:password@<proxyHost>:<proxyPort>そしてそれは機能していなかった。
Zahra

誰かが環境変数が必要な理由とそれがpipでどのように使用されるのか説明がありますか?condaの場合、.condarcファイルでプロキシを構成するのに十分です。
マギー

1
呼び出しの例は次のようになります:SET HTTPS_PROXY = https://512893:Pass%23h98@proxy.example.com:6050for username 512893&password pass#h98。パスワードまたはユーザー名(#この場合)の特殊文字をURLエンコードすることを忘れないでください。HTTP_PROXYフラグも設定してみてください。
-Nuhman

65

それは私のために働いていませんでした。私は仕事でhttpsを使わなければなりませんでした:

pip install --proxy=https://user@mydomain:port somepackage

更新するには、-Uを追加します。


1
これはWindowsの最も簡単なソリューションのようで、追加のパッケージは必要ありません。
JE Carter II

3
パスワードを使用する必要がある場合:pip install somepackage --proxy https://user:password@mydomain:port
Daniel R Carletti '26年

そして、あなたは何を知っていない場合はuser入れて置くために何もありませんので、多分それはです:pip install --proxy=https://mydomain:port somepackage
オリヴィエ

45

企業のルート証明書をsite-packages / pipフォルダーのcacert.pemファイルに追加することで、HTTPSを介したpipを引き続き使用できます。次に、〜/ pip / pip.conf(Windowsの場合は〜\ pip \ pip.ini)に次の行を追加して、プロキシを使用するようにpipを構成します。

[global]
proxy = [user:passwd@]proxy.server:port

それでおしまい。サードパーティのパッケージを使用したり、HTTPSをあきらめたりする必要はありません(もちろん、ネットワーク管理者はあなたが何をしているのかを見ることができます)。


これは私にとってはうまくいきましたが、手動でpipをインストールした後にのみ、つまり、最初はget-pip.pyを使用できません
Luke Dunstan

2
pip.iniの場所については、pip.pypa.io / en / latest / user_guide.html#configurationを参照してください。Windowsでは、「C:\ Python34 \ Lib \ site-packages \ pip_vendor \ requests \ cacert.pem」にcacertが見つかりました
lib

2
これは私のために働いたが、私は1つ作成する必要がありましたので、私はpip.configファイルを持っていませんでし~/.pip/pip.confた後にexport PIP_CONFIG_FILE=/root/.pip/pip.conf、私のインストールが働いていました!ありがとう!
Rhyuk 2016

2
ありがとう、あなたは私を正しい道に導きました!参考までに、Windows 7上のPython 3.7の場合、pipの証明書ファイルは明らかににあり[Python37]\Lib\site-packages\pip\_vendor\certifi\cacert.pemます。企業のSSLインターセプト証明書をBase64 .cer形式でエクスポートし、公開鍵をそのファイルに貼り付けて、企業プロキシの背後で完全なhttpsサポートを提供します。
Mike Strobel、2018

2
Windowsでのピップiniの場所はAppData/Roaming/pip/pip.ini....
Erik Aronesty

27

窓用; コマンドプロンプトでプロキシを設定します
set HTTP_PROXY=domain\username:password@myproxy:myproxyport

例:
set http_proxy=IND\namit.kewat:xl123456@192.168.180.150:8880


3
パスワードに!と@。
Ravi Kumar 2013

1
特殊文字をbashエスケープ文字でエスケープする:\
Adam

1
パスワードの「@」をエスケープ文字()でエスケープすることはできません。プロキシ文字列で%40にURLエンコードする必要があります。
Deep-B


1
この環境変数を設定しても、私のマシンのPIPには影響がないようです
Jack M

26

これは私のために働きました(CMD経由のWindows上で):

pip install --proxy proxyserver:port requests

21
$ pip --proxy http://proxy-host:proxy-port install packagename

これは私のために働いたものです


4
これは、一時的にプロキシの背後にある場合に非常に役立ちます。私はまた、構文に自分のユーザー名とパスワードを追加する必要がありました:pip --proxy http://username:password@proxy-host:proxy-port install <package>
Terrabits

14

私たちのセキュリティポリシーでは、pypiでhttps使用しない場合があります。SSL検査により証明書が書き換えられ、www.python.orgのpipの組み込みセキュリティが無効になります。真ん中の人はネットワーク管理者です。

だから私はプレーンなhttpを使用する必要があります。そのためには、システムプロキシとデフォルトのpypiをオーバーライドする必要があります。

bin/pip install --proxy=squidproxy:3128 -i http://www.python.org/pypi --upgrade "SQLAlchemy>=0.7.10"

2
これはもう機能しません。PyPiが自動的にhttpsに転送するようになりました。
マーティンM.

SSLインスペクションは機能していないようです。それは、キーのピン留め、または秘密の転送のためでしょうか?
bbaassssiiee 2017

@SamuelHarmer。Security4つの音節があります。トランプには多すぎる。
javadba 2017年

2
私の@bbaassssiieeは彼のpipがHTTPSで(2013年に)破ったと言っているかもしれません。彼の企業プロキシはすべての証明書を書き換えて独自のルート証明書を使用するため(すべてのSSLトラフィックを解読できるため)、pipは証明書の検証に失敗します。もちろん2017年には、-proxyを使用すると、pipは証明書のチェックを自動的に回避します。いずれにしても、SSLサイトに移動する場合でも、非SSL HTTPプロキシを介してプロキシしているため、多くの企業プロキシはすでにすべてのトラフィックを非SSLに効果的に変更しています。
カウバート

13

Windowsコマンドプロンプトを開きます。

プロキシ環境変数を設定します。

set http_proxy=http://user:password@proxy_ip:port
set https_proxy=https://user:password@proxy_ip:port

同じWindowsコマンドプロンプトでプロキシを使用してPythonパッケージをインストールします。

pip install --proxy="user:password@proxy_ip:port" package_name

12

Windows 7の場合:

pip install --proxy DOMAIN\user:password@proxyaddress:port package

つまり:

pip install --proxy BR\neo:p4ssw0rd@myproxyrocks.com.br:8080 virtualenv

11

モバイルホットスポット/ USBテザリングとしての電話

会社のプロキシを経由する方法を見つけるのに多くの問題がある場合は、電話(Wi-Fiがある場合はワイヤレスホットスポット、ない場合はUSBテザー)を介してWebに接続し、すばやく pip installます。

すべてのセットアップで機能するわけではないかもしれませんが、ほとんどの人がピンチに陥るはずです。



7

私は同じ問題を抱えていました:職場でauthを使用する企業プロキシの背後で、pip作業とSublime Text 2を実行できませんでした(まあ、プロキシ設定のカスタムセットアップで動作しました)。pipの場合(gitでも試してみます)、cntlmプロキシをインストールして解決しました。設定は非常に簡単でした:

  1. cntlm.iniを編集する
  2. 「ユーザー名」、「ドメイン」、「パスワード」フィールドを編集します
  3. プロキシ設定を使用して、「Proxy」行を追加します。 server:port
  4. 「NoProxy」という行が「localhost」を統合していることを確認してください(デフォルトではこのようになっています)。
  5. デフォルトのポートに注意してください:3128
  6. 保存すると、それだけです。

これが機能するかどうかをテストするには、新しいコマンドラインツールを起動して、次のことを試してください。

pip install django --proxy=localhost:3128

それでうまくいきました。これがお役に立てば幸いです。


6

これを実行することでこれを達成できます:

pip install --proxy=http://user:pass@your.proxy.com:3128 package==version

社内プロキシ内でPython 3.7.3を使用しています。



5

プロキシでpipをアップグレードしたい場合は、(たとえばWindowsで)使用できます:

python -m pip --proxy http://proxy_user:proxy_password@proxy_hostname:proxy_port insta
ll --upgrade pip

4

Windowsユーザーの場合:Flask-MongoAlchemyをインストールする場合は、次のコードを使用します

pip install Flask-MongoAlchemy --proxy="http://example.com:port"**

3

プロキシを介してインターネットに接続している場合、一部のコマンドの実行に問題がある可能性があります。

コマンドプロンプトで、プロキシ構成の環境変数を次のように設定します。

set http_proxy=http://username:password@proxyserver:proxyport
set https_proxy=https://username:password@proxyserver:proxyport

2

CentOS(実際にはすべてのLinuxディストリビューションは似ていると思います)で実行

env|grep http_proxy

そして

env|grep https_proxy

これらのコマンドの出力を確認します(プロキシアドレスが含まれているはずです)。

出力が空であるか、値が正しくない場合は、次のように変更します。

export http_proxy=http://10.1.1.1:8080
export https_proxy=http://10.1.1.1:8080

次に、pipを使用していくつかのパッケージをフェッチしてインストールしてみます。

pip --proxy http://10.1.1.1:8080 install robotframework

それがうまくいかなかったとき、私は実際に事件に会ったことがありません。一部のシステムでは、ルートである必要があります(sudoでは不十分です)。


2

警告、「pip search」コマンドには非常に悪い点があります。searchコマンドは、渡される方法に関係なく、プロキシ設定を使用しません。

私は「検索」コマンドを試してみて問題を解決しようとしていました、そしてそのバグについての詳細な説明を含むこの投稿を見つけました:https : //github.com/pypa/pip/issues/1104

Debian 8のpython 2.7.9のpip 1.5.6でバグが残っていることを確認できます。「pip install」コマンドはチャームのように機能します。


2

エラーが発生しました:

chris@green:~$ sudo http_proxy=http://localhost:3128 pip install django==1.8.8 
Downloading/unpacking django==1.8.8
  Cannot fetch index base URL http://pypi.python.org/simple/
  Could not find any downloads that satisfy the requirement django==1.8.8
No distributions at all found for django==1.8.8
Storing complete log in /home/chris/.pip/pip.log

(プロキシサーバーのポートはに転送されるsshポートですlocalhost:3128)。

私はそれを機能させるためにhttpとhttpsの両方のプロキシを設定する必要がありました:

chris@green:~$ sudo http_proxy=http://localhost:3128 https_proxy=http://localhost:3128 pip install django==1.8.8
Downloading/unpacking django==1.8.8
  Downloading Django-1.8.8.tar.gz (7.3Mb): 7.3Mb downloaded
  Running setup.py egg_info for package django

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
  Running setup.py install for django

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
    changing mode of build/scripts-2.7/django-admin.py from 644 to 755
    changing mode of /usr/local/bin/django-admin.py to 755
    Installing django-admin script to /usr/local/bin
Successfully installed django
Cleaning up...

http://pypi.python.org/simple/リダイレクトしますhttps://pypi.python.org/simpleが、pipのエラーは通知しません。


2

私もこれについての専門家ではありませんall_proxyが、〜/ .bashrcファイルで変数を設定することで機能させました。~/.bashrcファイルを開いてターミナルから編集するには、次のコマンドを実行します。

gedit ~/.bashrc &

ファイルの最後に以下を追加し、

export all_proxy="http://x.y.z.w:port"

次に、新しいターミナルを開くか、同じターミナルで以下を実行します。

source ~/.bashrc

設定http_proxyhttps_proxy変数だけでは、単純な使用法には十分ではありませんpip install somepackage。どういうわけかsudo -E pip install somepackage機能しますが、ユーザーのフォルダーにAnacondaのローカルインストールを使用している場合は、問題が発生します。

PS-私はUbuntu 16.04を使用しています。


2

ローカルで行うのはどうですか?ほとんどの場合、ブラウザを介してhttpsソースからダウンロードできます

  1. モジュールファイル(mysql-connector-python-2.0.3.zip / gz ...など)をダウンロードします。
  2. それを抽出し、setup.pyが置かれている抽出されたディレクトリに移動して、以下を呼び出します。

    C:\mysql-connector-python-2.0.3>python.exe setup.py install

6
しかし、その後、すべての依存関係(およびその依存関係など)を自分で
取得する


1

次の環境変数を設定します。 export PIP_PROXY=http://web-proxy.mydomain.com


1

Linuxを使用している場合、ルートとして:

env https_proxy=http://$web_proxy_ip:$web_proxy_port pip install something

envを使用すると、コマンドpip installの現在の実行用に変数https_proxyがエクスポートされます。

$ web_proxy_ipはプロキシのホスト名またはIPです$ web_proxy_portはポートです


0

「Fiddler」(https://www.telerik.com/download/fiddler)を使用して、WindowsのPIPに関する問題を解決しました)。ダウンロードしてインストールした後、次の手順を実行します。

「ルール」=>「自動認証」をクリック

例:pip install virtualenv -proxy 127.0.0.1:8888

プロンプトを開いて使用してください。

https://github.com/pypa/pip/issues/1182「voltagex」を検索(2015年5月22日コメント)


0

Windowsの場合は、C:/ProgramData/pip/pip.iniに移動して、

[グローバル]

プロキシ= http:// YouKnowTheRest

プロキシの詳細。これにより、pipのプロキシが永続的に構成されます。


0

より簡単な方法は次のとおりです。

  1. 「pip」という名前のフォルダを $HOMEディレクトリに。
  2. 手順1で作成したディレクトリに「pip.ini」(Windows)または「pip.conf」(Linux)という名前のファイルを作成します。
  3. 次の行をコピーして、pip.ini / pip.confに貼り付けます。

    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.