2013-03-18 10 views
39

Ho configurato un ambiente virtualenv sul mio Mac, ma non riesco a installare i pacchetti su Pip. Viene a mancare con il seguente errore:Utilizzo di virtualenv con gli spazi in un percorso

/Volumes/Macintosh: bad interpreter: No such file or directory 

ho rintracciato il problema fino a che vi sia uno spazio nel percorso, come è risposto qui: https://stackoverflow.com/a/10873611/126564
(il percorso essendo /Volumes/Macintosh HD/Python/my_project)

ma questo è un po ' di un problema La soluzione proposta è quella di:

"just put your virtualenv environment in a path without a space,"

ma la parte con lo spazio è il volume stesso. Tutti i miei percorsi avrebbero uno spazio, a meno che non li abbia memorizzati in una directory di /. E non credo che "immagazzini le tue cose al di fuori dello spazio utente" sia una buona soluzione.

Esiste una soluzione migliore?

+2

Soluzione migliore: aggiungere una correzione a virtualenv? – manojlds

+0

Oltre ad aggiustare diligentemente virtualenv o magari a violarti attraverso un hook post-installazione o qualcosa del genere, dovresti pensare a rinominare il tuo volume. –

+3

Si tratta di un problema aperto nel progetto virtualenv: https://github.com/pypa/virtualenv/issues/53 –

risposta

29

Cercando questo:

  • editing bin/activate, cambiare VIRTUAL_ENV='/Volumes/Macintosh HD/Python/my_project', e cambiare PATH="$VIRTUAL_ENV/bin:$PATH", per farlo funzionare nel proprio ambiente. utilizzando echo $PATH per verificare se funziona.
  • modifica bin/pip e bin/easy_install, cambiare prima linea nei due file da

    #!/usr/bin/env python

Dopo superiori a 2 passi, farete le vostre opere virtualenv (anche pip/easy_install).

+1

Sembra aver fatto il trucco. Stavo curiosando tra i file, ma non pensavo di modificare i pip e quelli di easy_install. Ho appena inserito un backslash prima dello spazio e sembra che funzioni fino ad ora. –

+12

Cambiarli in cosa? – zakdances

+3

Dopo aver eseguito le correzioni di cui sopra, ora il mio virtualenv punta all'installazione sbagliata di python come specificato da 'virtualenv -p' – zakdances

15

Si noti che non è necessario utilizzare la cartella del progetto per virtualenv. Ad esempio, è possibile posizionare il virtualenv in /tmp cartella o qualsiasi altra cartella senza spazi:

virtualenv /tmp/temporary_virtualenv 
virtualenv /home/my_envs/env_for_projectname 
+1

La migliore soluzione per me, dato che i file venv possono essere facilmente sovrascritti, perdendo le tue modifiche – tdc

2

A meno che non si dispone di una configurazione di unità atipico sul vostro Mac, il percorso /Volumes/Macintosh HD dovrebbe essere un link simbolico a /. In altre parole, invece di

$ virtualenv /Volumes/Macintosh\ HD/venvpath 

si può solo fare

$ virtualenv /venvpath 

Non che io sto cercando di condonare il software non gestisce gli spazi nei nomi dei file. Sono d'accordo con Hugo's comment sopra: tieni d'occhio lo relevant GitHub issue.

4

Modifica del file bin/activate ed escaping degli spazi ha funzionato per me. Modifica e salva il file, quindi esegui source bin/activate.

1

ho ancora un'altra soluzione - è sufficiente utilizzare pippacchetto invece di pipsceneggiatura.Per esempio:

python -m pip install . 

o anche:

python -m pip install -U pip 

Per me funziona come un fascino e non richiede modifiche nei file.

Problemi correlati