2012-03-14 27 views
48

Il mio computer esegue windows dietro un proxy su un server Windows (utilizzando la directory attiva), e non riesco a capire come farlo passare con pip (in python3). Ho provato a utilizzare --proxy, ma ancora solo timeout. Ho anche provato a impostare un lungo timeout (60s), ma ciò non ha fatto alcuna differenza. Le mie impostazioni proxy sono corrette e le ho confrontate con quelle che sto usando con successo in TortoiseHG per essere sicuro.Come utilizzare pip su Windows dietro un proxy di autenticazione

Ci sono altri trucchi che qualcuno sa di ciò che posso provare, o c'è qualche limitazione in pip per quanto riguarda i proxy di Windows?

Aggiornamento: I miei tentativi falliti riguardavano la ricerca di pypi. Ho appena provato a installare qualcosa e ha funzionato. Tuttavia, la ricerca non riesce ancora. Questo indica un bug in pip o funzionano in modo diverso?

risposta

58

Ho provato 2 opzioni che sia il lavoro sul NTLM della mia azienda autenticato proxy. Opzione 1 è quello di utilizzare --proxy http://user:[email protected]:proxyPort

Se si continua ad avere problemi Vorrei suggerire l'installazione di un servizio di autenticazione proxy (io uso CNTLM) e pip indica esso vale a dire qualcosa come --proxy http://localhost:3128

+1

Lo strumento CNTLM viene mantenuto attivamente e sembra funzionare molto bene. – Manveru

+3

Non ho potuto farlo funzionare, non importa tutti i tentativi che ho fatto – eusoubrasileiro

+1

Se hai caratteri speciali nella tua password o nel tuo nome utente, fallo fuori con \ prima del carattere speciale. Funziona bene. – Arockia

7

Ho riscontrato un problema simile e ho riscontrato che la mia azienda utilizza l'autenticazione proxy NTLM. Se vedete questo errore nella pip.log, questo è probabilmente il problema:

Impossibile recuperare URL http://pypi.python.org/simple/pyreadline: HTTP Error 407:. Proxy Authentication Required (L'ISA Server richiede l'autorizzazione per soddisfare la richiesta di accesso al filtro Proxy Web negato)

NTLMaps può essere utilizzato per interfacciarsi con il server proxy NTLM diventando un proxy intermedio.

Scarica NTLMAPs, aggiorna il server.cfg incluso, esegui il file main.py, quindi indirizza l'impostazione proxy di pip a 127.0.0.1 :.

Ho anche bisogno di modificare questi valori predefiniti nel file server.cfg a:

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/

22

Mi ci sono voluti un paio d'ore a capirlo, ma alla fine l'ho fatto funzionare con CNTLM e poi ho funzionato con un semplice file di configurazione pip. Ecco come ho ottenuto il lavoro con il file di configurazione pip ...

Soluzione:

1. In Windows passare alla directory del proprio profilo utente (Es. C: \ Users \ Sync) e creare una cartella denominata "pip"

2. creare un file denominato "pip.ini" in questa directory (Es. C: \ Users \ Sync \ pip \ pip.ini) e immettere il seguente in esso:

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

Sostituire [nome di dominio], [username], [password], [indirizzo proxy] e [porta proxy] con le tue informazioni

3. A questo punto mi è stato in grado di eseguire "PIP installare" senza problemi.

Speriamo che funzioni anche per gli altri!

P.S .: Ciò può costituire un problema di sicurezza perché la password è memorizzata in testo normale. Se questo è un problema, prendere in considerazione l'impostazione di CNTLM utilizzando this article (consente di utilizzare la password con hash anziché il testo normale). Quindi impostare proxy = 127.0.0.1:3128 nel file "pip.ini" sopra menzionato.

+0

Ulteriori informazioni sulla posizione di pip.ini sono disponibili [qui] (https://pip.pypa.io/en/latest/user_guide/#config-file). È possibile impostare la variabile di ambiente 'PIP_CONFIG_FILE' in modo che punti al file pip.ini – Mahesha999

+0

A volte è possibile che sia richiesto il proxy https anche –

+0

Legenda! Questo funziona per me usando Python 3.6 su Windows 7, con pip3 – CustodianOfCode

8

Mi sono imbattuto nello stesso problema su Windows 7. Sono riuscito a farlo funzionare creando una cartella "pip" con un file "pip.ini" al suo interno. Ho messo questa cartella dentro "C: \ Users \ {my.username} \ AppData \ Roaming", perché secondo la documentazione Python:

Su Windows il file di configurazione è% appdata% \ pip \ pip.ini

Nel file pip.ini ho solo:

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

Quindi no Nome utente: Password. E sta funzionando bene.

+0

Nel mio caso funziona solo se inserisco il mio nome utente e la password in chiaro in questo file ...:/Perché ogni altro dal CMD funziona come "ping XYZ". Perché pip non usa le impostazioni di IE? – hmrc87

10

Ecco come impostare il tutto:

  1. Aprire il prompt dei comandi (CMD) come amministratore.
  2. Esporta le impostazioni del proxy:

    set http_proxy=http://username:[email protected]:port

    set https_proxy=https://username:[email protected]:port

  3. Installare il pacchetto che si desidera installare:

    pip install PackageName

Per esempio:

Example

+0

Questa è sicuramente la prima cosa da provare. Python è multipiattaforma, e questo è l'equivalente di ciò che facciamo normalmente su Linux. Ha avuto problemi su Windows (dietro lo stesso proxy) dove l'argomento '--proxy' non lo avrebbe affatto, ma l'approccio standard di env var ha funzionato per la prima volta. Per la cronaca, abbiamo anche impostato 'no_proxy' per evitare che altre richieste interne provassero ad uscire attraverso il proxy. – randomsock

0

Si può anche incorrere in problemi con certificati dal proxy. Ci sono molte risposte qui su come recuperare il certificato del tuo proxy.

su un host Windows, per consentire pip per cancellare il proxy, si consiglia di impostare una variabile di ambiente come ad esempio:

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

È inoltre possibile utilizzare l'argomento --cert-PIP con lo stesso risultato.

Problemi correlati