CNTLM ile proxy arkasında pip kullanma


280

İş yerinde bir proxy arkasında pip kullanmaya çalışıyorum.

Bu yazının cevaplarından biri CNTLM kullanılmasını önerdi . Diğer yazıya göre yükledim ve yapılandırdım , ancak çalışan cntlm.exe -c cntlm.ini -I -M http://google.comhata verdi Connection to proxy failed, bailing out.

Ben de denedim pip install -–proxy=user:pass@localhost:3128(varsayılan CNTLM bağlantı noktası) ama bu yükseltti Cannot fetch index base URL http://pypi.python.org/simple/. Açıkçası proxy ile ilgili bir şey var.

CNTLM'nin doğru ayarlanıp ayarlanmadığını veya bunun etrafında başka bir yol olup olmadığını kimse daha kesin olarak nasıl kontrol edeceğini biliyor mu? Ben de ayarlayabilirsiniz biliyoruz http_proxyaçıklandığı gibi ortam değişkeni burada ama ne kimlik koymak için. Olanları gelen emin değilim cntlm.ini?


2
Proxy ve port numaranızın IP adresini bilmeniz ve cntlm.ini'nizde buna göre ayarlamanız gerekir (ayrıca varsa proxy için kullanıcı adınız ve şifreniz)
sayı 5

2
CNTLM'nin nasıl kurulacağı ve kullanılacağı hakkında bir blog yazdım. Mesaj Ubuntu ve Rails'i yüklemek için, ancak sürecin aynı olabileceğini düşünüyorum. Düzenleme: Temelde Ubuntu sürümümle aynı olan Windows için CNTLM kurulumu hakkında bu makaleyi okuyun . HTH.
Annie Lagang

Yanıtlar:


74

Windows için CNTLM'yi ayarlamak için bu makaleyi izleyin . Ubuntu için blog gönderimi okuyun .

Düzenle:

Temel olarak, herhangi bir platformda CNTLM kullanmak için, ana proxy'nize proxy olarak kullanmadan önce kullanıcı adınızı ve karma parolanızı ayarlamanız gerekir http://127.0.0.1:3128.

  1. Yapılandırmayı düzenleyin ve alan adı, kullanıcı adı, şifre ve üst proxy gibi önemli bilgileri ekleyin.

  2. Karma şifre oluşturun.

    pencereler cntlm –c cntlm.ini –H

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

  3. Düz metin parolayı yapılandırmadan kaldırın ve bunları oluşturulan parolalarla değiştirin.

Çalışıp çalışmadığını kontrol etmek için:

pencereler cntlm –M http://www.google.com

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

Daha ayrıntılı talimatlar için yukarıdaki bağlantılara bakın.

Güncelleme:

Sadece tamlık uğruna, Windows'da CNTLM'yi son zamanlarda yapılandırabilir ve kullanabildim. Proxy'miz nedeniyle Kindle for PC'nin senkronizasyon işlemi sırasında bir sorunla karşılaştım ve Windows için CNTLM'yi yükleyip yapılandırmak bu sorunu benim için düzeltti. Bakın benim yazı daha fazla ayrıntı için.


Bu kılavuz sorununuzu çözmezse, pip'i --trusted-host pypi.python.orgbenim için hile yapan komut satırı seçeneğiyle çalıştırmayı deneyin .
Petr

1
Bunu eklemek istiyorum, aslında cntlm'yi şirket ortamımızda Windows veya Mac üzerinde çalıştıramadım, ancak Fiddler'ı bir Windows makinesine yükleyip proxy olarak kullanmak sorunu çözdü.
Dean Meehan

268

Ubuntu İşe vekil seçeneği alamadım ile reklamı olarak - bu yüzden komutunun ardından yaptığı değil iş:

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

Ancak https_proxyçevre değişkenini dışa aktarmak (not https_proxynot http_proxy), hile yaptı:

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

sonra

sudo -E pip install somepackage

1
https_proxy ayarı Mac OS X'te de iş yapar.
Bharadwaj Srigiriraju

4
Aynı burada, --proxy işe yaramadı, İKİ http_proxy VE https_proxy (corp güvenlik duvarının arkasındaki Debian) belirtmek zorunda kaldım
marc.guenther

34
Dahil için teşekkür ederiz -Eiçinde sudoacaba ne zaman programları benim ENV neden görmediklerini sürekli beni atar ki komuta.
AndyC

11
-Sudo'ya benim için hile yaptı. Daha önce ayarladığım ortam değişkenini "http_proxy" korur. Teşekkürler!
imagineerThat

7
pip --proxy = someproxy-url: port install bazı paket benim için çalıştı Win8.1 pip 6.1.1
zenpoy ile

96

Windows altında ayarlamayı unutmayın

SET HTTPS_PROXY=<proxyHost>:<proxyPort>

ne için ayarlamam gerekiyordu

pip install pep8

Fedora'da ayrıca 'export http_proxy = <proxy_host>: <port>' ile çalışır
Damien

5
Bu benim için çalıştı, ancak sadece SET HTTPS_PROXY = ht tps: // kullanıcı: pass @ addr: port [eksi boşluk yığınını gargaradan korumak için eklemem gereken boşluk] ve şifremdeki özel karakterleri değiştirmek zorunda kaldım % nn şeklinde hex ile
Seth

bu benim için çalıştı. daha önce yapıyordum: SET HTTPS_PROXY=username:password@<proxyHost>:<proxyPort>ve işe yaramıyordu.
Zahra

Birisi çevre değişkenine neden ihtiyaç duyulduğunu ve pip tarafından nasıl kullanıldığını açıklayabilir mi? Conda için proxy .condarc dosyasında yapılandırmak yeterlidir.
maggie

1
Örnek bir çağrı şuna benzer: SET HTTPS_PROXY = https://512893:Pass%23h98@proxy.example.com:6050kullanıcı adı 512893ve şifre için pass#h98. Özel karakterleri şifre veya kullanıcı adında ( #bu örnekte) url kodlamayı unutmayın . Belki de HTTP_PROXYbayrağı ayarlamayı deneyin .
Nuhman

65

Benim için işe yaramıyordu. İşte https kullanmak zorunda kaldım :

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

Güncellemek için -U ekleyin.


1
Bu, ek paket gerektirmeyen Windows için en basit çözüm gibi görünüyor.
JE Carter II

3
Bir şifre kullanmanız gerekiyorsa:pip install somepackage --proxy https://user:password@mydomain:port
Daniel R Carletti

Ve ne userkoyacağınızı bilmiyorsanız , belki de koyacak bir şey olmadığı için:pip install --proxy=https://mydomain:port somepackage
Olivier

45

Şirket paketleri kök sertifikasını site paketleri / pip klasörünüzdeki cacert.pem dosyasına ekleyerek HTTPS üzerinden pip kullanmaya devam edebilirsiniz. Ardından pip'i ~ / pip / pip.conf dosyasına (veya Windows kullanıyorsanız ~ \ pip \ pip.ini) aşağıdaki satırları ekleyerek proxy'nizi kullanacak şekilde yapılandırın:

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

Bu kadar. Üçüncü taraf paketleri kullanmanıza veya HTTPS'den vazgeçmenize gerek yoktur (elbette, ağ yöneticiniz ne yaptığınızı görebilir).


Bu benim için çalıştı, ancak pip'i manuel olarak yükledikten sonra, başlangıçta get-pip.py'yi kullanamayacağınız anlamına gelir
Luke Dunstan

2
Pip.ini yeri için bkz pip.pypa.io/en/latest/user_guide.html#configuration ": \ Python34 \ Lib \ site paketler \ pip_vendor \ taleplere \ cacert.pem C" pencerelerde ben de cacert bulundu
lib

2
Bu benim için çalıştı ama ben bir tane oluşturmak zorunda bu yüzden bir pip.config dosyası yoktu ~/.pip/pip.confsonra export PIP_CONFIG_FILE=/root/.pip/pip.confve benim kurulum çalıştı! Teşekkürler!
Rhyuk

2
Teşekkürler, beni doğru yola koydun! FYI, Python 3.7 için Windows 7 pip'in sertifikalar dosyasındaki görünüşe göre [Python37]\Lib\site-packages\pip\_vendor\certifi\cacert.pem. Şirketinizin SSL yakalama sertifikasını Base64 .cer biçiminde dışa aktarın, ortak anahtarı bu dosyaya yapıştırın ve şirket proxy'sinin arkasında tam https desteğini belirtin.
Mike Strobel

2
Windows'ta pip ini konumunuz olabilir AppData/Roaming/pip/pip.ini....
Erik Aronesty

27

pencereler için; komut isteminde proxy'nizi şu şekilde ayarlayın:
set HTTP_PROXY=domain\username:password@myproxy:myproxyport

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


3
Parola gibi özel karakterlere sahipse ne olur! ve @.
Ravi Kumar

1
bash ile özel karakter kaçmak char: \
Adam

1
Şifrenizde escape karakteri () ile '@' 'den kaçamazsınız, proxy dizesinde% 40 olarak url kodlamanız gerekir.
Deep-B


1
Bu ortam değişkenini ayarlamanın, makinemdeki pip üzerinde bir etkisi yok gibi görünüyor
Jack M

26

Bu benim için çalıştı (CMD üzerinden Windows'ta):

pip install --proxy proxyserver:port requests

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

Bu benim için işe yaradı


4
Bu, yalnızca geçici olarak bir proxy'nin arkasında olduğunda kullanışlıdır. Ayrıca sözdizim için kullanıcı adımı ve şifremi eklemek zorunda kaldım:pip --proxy http://username:password@proxy-host:proxy-port install <package>
Terrabits

14

Güvenlik politikamız uyarınca, https'yi pypi ile kullanamayabilirim, SSL denetimi yeniden sertifika yazar, www.python.org için yerleşik pip güvenliğini ihlal eder. Ortadaki adam ağ yöneticisi.

Bu yüzden düz http kullanmam gerekiyor . Bunu yapmak için sistem proxy yanı sıra varsayılan pypi geçersiz kılmanız gerekir:

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

2
Bu artık işe yaramıyor. PyPi şimdi sizi otomatik olarak https'ye yönlendiriyor.
Martin M.

SSL denetimi işe yaramıyor gibi görünüyor; anahtar sabitleme veya ileri gizlilik olabilir mi?
bbaassssiiee

@SamuelHarmer. Securitydört hecesi vardır. Trump için çok fazla.
javadba

2
@Bbaassssiiee pip'inin (2013'te) HTTPS ile kırıldığını söylüyor olabilir, çünkü kurumsal vekili tüm sertifikaları kendi kök sertifikalarını kullanmak için yeniden yazar (böylece tüm SSL trafiğinin şifresini çözebilirler) ve pip sertifika doğrulamasında başarısız olur. Elbette 2017'de pip --proxy kullanıldığında sertifika kontrolünü otomatik olarak önler. Birçok kurumsal proxy zaten zaten tüm trafiğinizi etkili bir şekilde SSL olmayan bir şekilde değiştirir, çünkü SSL sitelerine gittiğinizde bile SSL olmayan HTTP proxy'si üzerinden proxy uygularsınız.
cowbert

13

Windows komut istemini açın.

Proxy ortam değişkenlerini ayarlayın.

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

Aynı Windows komut isteminde proxy kullanarak Python paketlerini yükleyin.

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

12

Windows 7'de:

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

yani:

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

11

Mobil hotspot / USB tethering olarak telefon

Kurumsal vekil aracılığıyla bir yol bulmakta çok sorun yaşıyorsam, telefonumla (wifi varsa kablosuz hotspot, değilse USB bağlantı noktası) web'e bağlanıyorum ve hızlı bir şekilde yapıyorum pip install.

Tüm kurulumlar için çalışmayabilir, ancak çoğu insanı bir tutamla yakalamalıdır.



7

Ben de aynı sorunu vardı: iş yerinde auth ile kurumsal bir vekil arkasında, pip çalışma yanı sıra Sublime Metin 2 olamazdı (iyi, benim proxy ayarları özel kurulum ile çalıştı). Pip için (ve ben git denemek), ben cntlm proxy yükleme çözdü. Yapılandırmak çok basitti:

  1. Düzenle cntlm.ini
  2. "Kullanıcı adı", "Alan adı", "Şifre" alanlarını düzenleyin
  3. Proxy ayarlarınızla bir "Proxy" satırı ekleyin: server:port
  4. "NoProxy" satırının "localhost" ile bütünleştiğinden emin olun (varsayılan olarak bunun gibi)
  5. Varsayılan bağlantı noktasına dikkat edin: 3128
  6. Kaydet ve hepsi bu.

Bunun işe yaradığını test etmek için yeni bir komut satırı aracı başlatın ve şunu deneyin:

pip install django --proxy=localhost:3128

Bu benim için çalıştı. Umarım bu size yardımcı olacaktır.


6

Bunu çalıştırarak başarabilirim:

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

Kurumsal bir proxy içinde Python 3.7.3 kullanıyorum.



5

pip'i proxy ile yükseltmek istiyorsanız şunu kullanabilirsiniz (örneğin Windows'ta):

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

4

Windows kullanıcıları için: Flask-MongoAlchemy'yi kurmak istiyorsanız aşağıdaki kodu kullanın

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

3

İnternet'e bir proxy'nin arkasında bağlanıyorsanız, bazı komutların çalıştırılmasında sorun olabilir.

Komut isteminde proxy yapılandırması için ortam değişkenlerini aşağıdaki gibi ayarlayın:

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

2

CentOS'ta (aslında tüm linux dağıtımlarının benzer olduğunu düşünüyorum)

env|grep http_proxy

ve

env|grep https_proxy

bu komutların çıktısının ne olduğunu kontrol edin (proxy adreslerinizi içermelidirler).

Çıktılar boşsa veya yanlış değerlere sahipse bunları değiştirin, örneğin:

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

Şimdi pip kullanarak bazı paketleri getirmeye ve kurmaya çalışın:

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

ve aslında dava çalışmadığı zaman hiç karşılaşmadım. Bazı sistemler için bir kök olmanız gerekir (sudo yeterli değildir).


2

Uyarı, "pip arama" komutu ile çok kötü bir şey var. Arama komutu, geçirilme biçiminden bağımsız olarak proxy ayarını kullanmaz.

Ben sadece "arama" komutunu denemek sorunu anlamaya çalışıyordu ve bu hata hakkında ayrıntılı açıklama ile bu yazı bulundu: https://github.com/pypa/pip/issues/1104

Hata piton 2.7.9 ile Debian 8 pip 1.5.6 ile kalır teyit edebilir. "Pip install" komutu cazibe gibi çalışır.


2

Hatayı aldım:

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

(Proxy sunucusunun bağlantı noktası ssh bağlantı noktasına yönlendirilir localhost:3128 ).

Çalışması için hem http hem de https proxy'lerini ayarlamak zorunda kaldım:

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...

olarak http://pypi.python.org/simple/yönlendirir https://pypi.python.org/simpleancak piphata size söylemez.


2

Ben de bu konuda uzman değilim ama all_proxy~ / .bashrc dosyasında değişken ayarlayarak çalıştım . ~/.bashrcAşağıdaki komutları kullanarak dosyayı açmak ve bir terminal çalışmasından düzenlemek için,

gedit ~/.bashrc &

Dosyanın sonuna aşağıdakileri ekleyin,

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

Sonra ya yeni bir terminal açın ya da aynı terminalde takip edin,

source ~/.bashrc

Sadece ayar http_proxyve https_proxydeğişkenler basit kullanım için yeterli değildir pip install somepackage. Bir şekilde sudo -E pip install somepackageçalışıyor olsa da , ancak kullanıcılarımın klasöründe Anaconda'nın yerel kurulumunu kullanmam durumunda bana bir sorun verdi.

PS - Ubuntu 16.04 kullanıyorum.


2

Sadece yerel olarak yapmaya ne dersiniz? Büyük olasılıkla tarayıcınız üzerinden https kaynağından indirebilirsiniz

  1. Modül dosyanızı indirin (mysql-connector-python-2.0.3.zip / gz ... etc).
  2. Çıkarın ve setup.py dosyasının bulunduğu çıkarılmış dizine gidin ve arayın:

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

6
Ama sonra gitmeli ve tüm bağımlılıkları (ve bağımlılıklarını ve ...) kendiniz
almalısınız

1

İşte benim işime yarayan bu:

pip --proxy proxy url:port command package

1

Aşağıdaki ortam değişkenini ayarlayın: export PIP_PROXY=http://web-proxy.mydomain.com


1

Linux kullanıyorsanız, root olarak:

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

Env kullandığınızda, pip install komutunun geçerli yürütülmesi için https_proxy değişkenini dışa aktarır.

$ web_proxy_ip Proxy'nizin ana bilgisayar adı veya IP'sidir $ web_proxy_port Bağlantı Noktasıdır



0

Windows için C: /ProgramData/pip/pip.ini adresine gidin ve

[Genel]

proxy = http: // YouKnowTheRest

Proxy bilgilerinizle. Bu, pip için proxy'yi kalıcı olarak yapılandırır.


0

Daha basit bir yaklaşım şöyle olabilir:

  1. Dizininizde "pip" adlı bir klasör oluşturun $HOME.
  2. 1. adımda oluşturulan dizinde "pip.ini" (Windows) veya "pip.conf" (Linux) adlı bir dosya oluşturun
  3. Aşağıdaki satırları pip.ini / pip.conf altına kopyalayıp yapıştırın:

    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.