2014-06-30 6 views
5

ho installato un nuovo ambiente pyvenv con i seguenti comandi:chiamata corretta pip in un ambiente pyvenv python3.4

python3.4 -m venv env 
source env/bin/activate 

Tuttavia, quando chiamo which pip, ottengo il seguente: /usr/bin/pip. Apparentemente, l'installazione del pip di sistema è ancora utilizzata. Se guardo la documentazione pyvenv, si comunica quanto segue:

Modificato nella versione 3.4: Installa pip di default, ha aggiunto il --without-pip e --copies opzioni

E questo è corretto, quando si tenta di installare pip nel mio ambiente attivato, ottengo il seguente:

requisito già up-to-date: pip in ./env/local/lib/python3.4/dist-packages

Come posso essere sicuro che quando chiamo pip nel mio ambiente attivato, viene chiamato pyvenv?

+0

Provare ad attivare env in un nuovo terminale. Indica ancora lo script sbagliato? – davidism

+0

prova 'which pip3' –

+0

@davidism Sì, se attivo l'env in un nuovo terminale punta ancora allo script sbagliato. Quando si crea un ambiente virtuale con virtualenv funziona tutto, ma non ha senso usare un'applicazione di terze parti se dovrebbe funzionare anche in python 3.4. – hY8vVpf3tyR57Xib

risposta

0

Avevo un problema simile, ho chiesto al mio webhost (WebFaction) e ottenuto un'ottima risposta. La pagina Understanding pyvenv and pip in virtual environments with python 3.4 and above è riepilogata di seguito.

Sembra che non ci si debba preoccupare di quale pip viene utilizzato dall'ambiente virtuale. Finché il tuo ambiente virtuale è attivo, tutti i pacchetti verranno installati al suo interno, indipendentemente dal pip utilizzato.

Una cosa sugli ambienti virtuali Python 3.4 è che se il pacchetto non supporta Python's new "wheel" package format, il pacchetto non verrà installato all'interno della directory dell'ambiente virtuale. Tuttavia manterrà comunque una connessione con l'ambiente virtuale.

A causa di questa stranezza, ho scelto di utilizzare virtualenv anziché pyvenv-3.4 e tutto ha funzionato come previsto.

1

Sembra che tu (e io nella mia precedente risposta) stessimo vedendo gli effetti di uno bug. Tutto sembra funzionare nelle versioni più recenti di pyvenv-3.4.

$ pwd 
~/test 
$ pyvenv-3.4 myenv 
$ source myenv/bin/activate 
(myenv)$ which pip 
~/test/myenv/bin/pip 
0

Il problema è stato risolto su Ubuntu 14.10.

E se avete installato python 3.4 con il seguente comando su Centos6.

yum install http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/python34u-3.4.2-1.ius.centos6.x86_64.rpm

Si dovrebbe riaprire un nuovo terminale (o nuovo login vostro sistema).

Funziona per me. In bocca al lupo.