Bir kimlik doğrulama proxy'sinin arkasındaki pencerelerde pip nasıl kullanılır


90

Bilgisayarım bir Windows sunucusunda (aktif dizini kullanarak) bir proxy arkasında pencereler çalıştırıyor ve pip(python3'te) ile nasıl geçeceğimi bulamıyorum. Kullanmayı denedim --proxyama yine de zaman aşımına uğradı. Ayrıca uzun bir zaman aşımı (60s) ayarlamayı denedim, ancak bu hiçbir fark yaratmadı. Proxy ayarlarım doğru ve emin olmak için bunları TortoiseHG'de başarıyla kullandığım ayarlarla karşılaştırdım.

Kimsenin deneyebileceğimi bildiği başka numaralar var mı, yoksa pipWindows proxy'leri ile ilgili bazı sınırlamalar var mı?

Güncelleme: Başarısız girişimlerim pypi'yi aramayı içeriyordu. Aslında bir şey yüklemeyi denedim ve işe yaradı. Yine de arama başarısız oluyor. Bu, bir hatayı mı gösteriyor pipyoksa farklı şekilde mi çalışıyor?

Yanıtlar:


107

Her ikisi de şirketimin NTLM kimlik doğrulamalı proxy'si üzerinde çalışan 2 seçeneği denedim. 1. seçenek kullanmak--proxy http://user:pass@proxyAddress:proxyPort

Hala sorun yaşıyorsanız, bir proxy kimlik doğrulama hizmeti yüklemenizi ( CNTLM kullanıyorum ) ve pip'i işaretlemenizi, yani--proxy http://localhost:3128


1
CNTLM aracı aktif olarak korunur ve gerçekten iyi çalışıyor gibi görünüyor.
Michal Fita

6
Yaptığım tüm belirsizlikler önemli değil
eusoubrasileiro

2
Parolanızda veya kullanıcı adınızda özel karakterler varsa, özel karakterden önce \ karakterini kullanın. İyi çalışıyor.
Arockia

pip'e isteği proxy'ye göndermesini söylediğinizi doğru anlıyor muyum, verilen kullanıcı ve parola ile http bağlantısı üzerinden kimlik doğrulaması yapıyor musunuz? Bu, şifrenizin proxy sunucusuna şifresiz olarak gönderileceği anlamına gelir, değil mi? Benim için büyük bir güvenlik riski gibi görünüyor yoksa bir şey mi kaçırıyorum?
Robert

Benim için Microsoft Forefront güvenlik duvarıyla çalıştı
Raúl Salinas-Monteagudo

66

Bunu anlamam birkaç saatimi aldı ama sonunda CNTLM kullanarak çalışmasını sağladım ve daha sonra sadece bir pip yapılandırma dosyasıyla çalışmasını sağladım. İşte pip yapılandırma dosyasıyla nasıl çalıştığını görüyorum ...

Çözüm:

1. Windows'ta kullanıcı profili dizininize gidin (Ör. C: \ Users \ Sync) ve " pip " adlı bir klasör oluşturun

2. Bu dizinde " pip.ini " adlı bir dosya oluşturun (Örn. C: \ Users \ Sync \ pip \ pip.ini) ve içine şunu girin:

    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org
    proxy = http://[domain name]%5C[username]:[password]@[proxy address]:[proxy port]

Değiştir [alan adı] , [kullanıcı adı] , [şifre] , [proxy adresi] ve [vekil port] kendi bilgileri ile.

Not eğer [alan adı] , [kullanıcı adı] veya [şifre] özel karakterler vardır, etmelisin yüzde kodlamasını | onları kodlayın .

3. Bu noktada " pip install " ı herhangi bir sorun olmadan çalıştırabildim .

Umarım bu diğerleri için de işe yarar!

Not: Bu, şifrenizin düz metin olarak saklanması nedeniyle bir güvenlik sorunu oluşturabilir. Bu bir sorunsa, bu makaleyi kullanarak CNTLM'yi kurmayı düşünün (düz metin yerine karma parola kullanılmasına izin verir). Daha sonra proxy = 127.0.0.1:3128yukarıda bahsedilen "pip.ini" dosyasını ayarlayın .


2
Pip.ini konumu hakkında daha fazla bilgiyi burada bulabilirsiniz . Sen ayarlayabilirsiniz PIP_CONFIG_FILEpip.ini dosyaya noktaya ortam değişkeni
Mahesha999

1
Sevdim!!!! çok temiz - çoğu proxy'nin şifrenizi manuel olarak girmenize izin vereceğini unutmayın. Şifrenizi ASLA açık metin olarak bırakmayın!
avgvstvs

1
Buraya çok önemli bir başka küresel ayar eklenebilir, örneğin "index-url = pypi.tuna.tsinghua.edu.cn/simple " eklenmesi , Çin Halk Cumhuriyeti'nde pip indirme hızını çok artıracaktır. Ve Linux altında karşılık gelen dosya ~ / .pip / pip.conf
TingQian LI

4
[alan adı] nedir?
Alex B

1
@AlexB, [alan adı], Windows alan adınızı ifade eder
Mike Pennington

46

Ben böyle kurdum:

  1. Komut istemini (CMD) yönetici olarak açın.
  2. Proxy ayarlarını dışa aktarın:

    set http_proxy=http://username:password@proxyAddress:port

    set https_proxy=https://username:password@proxyAddress:port

  3. Kurmak istediğiniz paketi kurun:

    pip install PackageName

Örneğin:

Misal


4
Bu kesinlikle denenecek ilk şey. Python çapraz platformdur ve bu normalde Linux'ta yaptığımızın karşılığıdır. Windows'ta (aynı proxy'nin arkasında), --proxyargümanın hiç olmayacağı, ancak standart env var yaklaşımı ilk seferinde işe yarayan sorunlar vardı . Kayıt için, no_proxyproxy üzerinden dışarı çıkmaya çalışan diğer dahili istekleri de önlemeye karar verdik .
randomsock

benim için win10 üzerinde çalışmıyor. Böyle bir emülatör konsol aracı kullanmak cygwinveya cmderdaha sonra bunu linux şekilde yapın: export http_proxy=<proxy>ve export https_proxy=<proxy>ardından sadece bunupip install <package>
Bucky

Bu benim için çalıştı ama --proxykomut satırı bayrağı hiç işe yaramadı. Windows 10.
AmbroseChapel

15

Windows 7'de de aynı sorunla karşılaştım. İçinde bir "pip.ini" dosyası olan bir "pip" klasörü oluşturarak onu çalıştırmayı başardım. Python belgelerine göre bu klasörü "C: \ Users \ {my.username} \ AppData \ Roaming" içine koydum:

Windows'ta yapılandırma dosyası% APPDATA% \ pip \ pip.ini'dir

Pip.ini dosyasında yalnızca:

[global]
proxy = [proxy address]:[proxy port]

Yani kullanıcı adı yok: şifre. Ve gayet iyi çalışıyor.


1
Benim durumumda bu sadece kullanıcı adımı ve şifremi bu dosyaya açık metin olarak koyarsam işe yarar ...: / CMD'deki diğer her şey neden "ping XYZ" gibi çalışıyor? Pip neden IE ayarlarını kullanmıyor?
hmrc87

7

Benzer bir sorunla karşılaştım ve şirketimin NTLM proxy kimlik doğrulaması kullandığını gördüm. Bu hatayı pip.log dosyanızda görüyorsanız sorun büyük olasılıkla şudur:

URL http://pypi.python.org/simple/pyreadline getirilemedi: HTTP Hatası 407: Proxy Kimlik Doğrulaması Gerekli (ISA Sunucusu, isteği yerine getirmek için yetkilendirme gerektirir. Web Proxy filtresine erişim reddedildi.)

NTLMap'ler, bir ara proxy haline gelerek NTLM proxy sunucusuyla arabirim oluşturmak için kullanılabilir.

NTLMAP'leri indirin, içerilen server.cfg'yi güncelleyin, main.py dosyasını çalıştırın, ardından pip'in proxy ayarını 127.0.0.1 olarak işaretleyin :.

Ayrıca server.cfgdosyadaki bu varsayılan değerleri şu şekilde değiştirmem gerekiyordu:

LM_PART:1
NT_PART:1

# Highly experimental option. See research.txt for details.
# LM - 06820000
# NT - 05820000
# LM + NT - 
NTLM_FLAGS: 07820000

http://ntlmaps.sourceforge.net/


2

Uzak bir Windows ortamında aynı sorunu yaşadım. Burada veya diğer benzer gönderilerde bulunan birçok çözümü denedim ama hiçbir şey işe yaramadı. Sonunda çözüm oldukça basitti. NO_PROXYCmd ile ayarlamak zorunda kaldım :

set NO_PROXY="<domain>\<username>:<password>@<host>:<port>"
pip install <packagename>

Çift tırnak kullanmalı ve NO_PROXYbüyük harfe ayarlamalısınız . Ayrıca ekleyebilirsinizNO_PROXYKonsolu her kullandığınızda bunu ayarlamak yerine bir ortam değişkeni olarak .

Umarım burada yayınlanan başka bir çözüm işe yararsa yardımcı olur.


1

Proxy'nizden gelen sertifikalarla ilgili sorunlar da yaşayabilirsiniz. Proxy sertifikanızın nasıl alınacağına dair burada pek çok cevap var.

Bir Windows ana bilgisayarında, pip'in proxy'nizi temizlemesine izin vermek için aşağıdakiler gibi bir ortam değişkeni ayarlamak isteyebilirsiniz:

PIP_CERT=C:\path\to\certificate\file\in\pem\form\myproxycert.pem

Aynı sonuçla için --certargümanını da kullanabilirsiniz PIP.


1

cntlm'yi yükleyin: Cntlm: C'de Hızlı NTLM Kimlik Doğrulama Proxy'si

Config cntlm.ini:

Kullanıcı adı ob66759

Domain NAM

Parola sırrı

Vekil proxy1.net:8080

Proxy proxy2.net:8080

NoProxy localhost, 127.0.0. *, 10. *, 192.168. *

Dinle 3128

127.0.0.1'e izin ver

# IP adresiniz

10.106.18.138'e izin ver

Başlat:

cntlm -v -c cntlm.ini

Şimdi cmd.exe'de:

pip install --upgrade pip --proxy 127.0.0.1:3128

Collecting pip
  Downloading https://files.pythonhosted.
44c8a6e917c1820365cbebcb6a8974d1cd045ab4/

    100% |███████████████████████████████
Installing collected packages: pip
  Found existing installation: pip 9.0.1
    Uninstalling pip-9.0.1:
      Successfully uninstalled pip-9.0.1

Successfully installed pip-10.0.1

İşler!

Şifreyi de gizleyebilirsiniz: https://stormpoopersmith.com/2012/03/20/using-applications-behind-a-corporate-proxy/


1

Windows10 ve üzeri çözümlerde aynı sorun benim için çalışmıyor.

gibi bir öykünücü konsol aracı kullanın cygwinve ardından bunu varsayılan linux yöntemiyle yapın:

export http_proxy=<proxy>
export https_proxy=<proxy>
pip install <package>

ve işler iyi gidiyor.


Windows 10 altında, kimlik doğrulama proxy'si ile bu benim için çalışıyor: ara proxy olarak cntlm kullanarak, ardından msdos komut isteminde: "set https_proxy = localhost: 3128" ve ardından "pip install -U setuptools == 41.0.1"
mrtexaz

0

Etki alanı ve kullanıcı arasındaki ters eğik çizgiyi kodlamayı deneyin

pip --proxy https://domain%5Cuser:password@proxy:port install -r requirements.txt

0

Benim için mesele bir conda ortamının içinde olmaktı. Büyük olasılıkla conda ortamından ("pip" conda ortamını işaret ettiği) pip komutunu kullandı. Proxy ayarlarını --proxy veya set http_proxy ile yapmak yardımcı olmadı.

Bunun yerine, yeni bir CMD açıp orada "pip kurulumu" yapmak yardımcı oldu.

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.