Qual è la ragione per cui virtualenv non associa i file .py(w)
con la versione di eseguibili Python di virtualenv? Questo sembra un compito ideale per virtualenv su Windows, tenendo conto del fatto che non esiste un meccanismo come shebang su Windows.Perché virtualenv su Windows associa file .py/.pyw/.pyo/.pyc con la versione di virtualenv degli eseguibili Python?
risposta
associazioni di tipo file vengono gestiti nel registro di Windows. Lo script activate di virtualenv dovrebbe modificare le chiavi di registro e lo script di disattivazione dovrebbe ripristinare il valore precedente (o rischiare di rompere le associazioni).
Che cosa succede se si attiva una virtualenv, aprire una seconda istanza di cmd.exe, e attivare un virtualenv diverso? A meno che non vengano disattivati nell'ordine corretto, i valori memorizzati per le chiavi del Registro di sistema andrebbero persi.
Io non sono uno sviluppatore virtualenv, direi che i potenziali problemi superano di gran lunga il leggero vantaggio.
La risposta più breve è probabilmente "è complicato e doloroso e nessuno vuole basta che caratteristica per la sua attuazione ". – Velociraptors
FWIW, http: //www.python.org/dev/peps/pep-0397/descrive l'utilizzo di un python launcher 'virtuale' che rileva la versione python appropriata. Forse una tale utilità potrebbe essere fatta per includere la logica adatta per virtualenv? – Macke
@Macke che la proposta non esisteva quando è stata posta la domanda, ma è certamente possibile che virtualenv possa essere modificato con qualcosa del genere – Velociraptors
Tutta la mia sviluppo Python attualmente è su Linux, ma io sto guardando a lavorare su Windows, che è come ho trovato questa domanda. La mia risposta sarebbe operativa:
Invece di digitare <scriptName>.py
al prompt, digito sempre python <scriptName>.py
. Se si adotta questa abitudine, virtualenv non eseguirà il giusto Python per te?
Se si adotta questa abitudine, la risposta è sì, l'eseguibile di Python da virtualenv attivo verrà eseguito poiché è il primo * python.exe * nella variabile d'ambiente * PATH *. –
Il Python lanciatore supporta i comandi personalizzati. Creare un file py.ini in $ ENV: LOCALAPPDATA con una sezione come questa:
[commands]
venvpython=C:\Path\To\Virtualenv\Scripts\python.exe
Ora, è possibile utilizzare venvpython nel #! la linea dello script:
#!venvpython
import sys
print(sys.executable)
virtualenvwrapper-win fa file Python associare con virtualenv attualmente attiva:
Nota che lo script batch di
pyassoc
richiede un prompt dei comandi con privilegi elevati o che UAC è disabilitato. Questo script associa .py file conpython.bat
, un semplice file batch che chiama il dirittopython.exe
a seconda se si dispone di un virtualenv attiva. Questo consente di chiamare gli script python dalla riga di comando e di invocare l'interprete python destro . Dai un'occhiata alla fonte: è incredibilmente semplice, ma il modo migliore che ho trovato per gestire l'associazione condizionale di un'estensione di file.
python.bat
assomiglia a questo
@echo off
if defined PYTHONHOME (
goto MAIN
)
FOR /F "tokens=*" %%i in ('whereis.bat python.exe') do set PYTHONHOME=%%~dpi
SET PYTHONHOME=%PYTHONHOME:~0,-1%
:MAIN
SETLOCAL EnableDelayedExpansion
if defined VIRTUAL_ENV (
set PY="%VIRTUAL_ENV%\Scripts\python.exe"
) else (
set PY="%PYTHONHOME%\python.exe"
)
ENDLOCAL & %PY% %*
:END
UPDATE
Ora è possibile - vedi How to associate Python scripts with active virtualenv?
- 1. Python + Django + VirtualEnv + Windows
- 2. cambiare la cartella virtualenv su windows
- 3. problema django-admin.py e virtualenv su Windows
- 4. cambia la versione predefinita di python con virtualenvwrapper (& virtualenv)
- 5. Python - Virtualenv, python 3?
- 6. Perché virtualenv non crea la cartella DLL?
- 7. Installare MySQL-python in virtualenv su Windows 7
- 8. Controllo versione Virtualenv e Source
- 9. CMake - impostazione python virtualenv
- 10. Problema con Virtualenv su Mac OS X
- 11. Virtualenv continua a caricare pacchetti di siti globali su Windows
- 12. virtualenv, python e subversion
- 13. Come installo una versione precedente di Django su virtualenv?
- 14. Installa Python-Dbus in virtualenv
- 15. Errore di importazione con virtualenv
- 16. Duplicate virtualenv
- 17. Virtualenv con Eclipse (Galileo)
- 18. Python/jython coesistenti in virtualenv
- 19. Flusso di lavoro con virtualenv e pip
- 20. Come eseguo uwsgi con virtualenv
- 21. Come installare python-ldap su python 2.7 virtualenv su windows senza compilare
- 22. TKinter in a Virtualenv
- 23. Copia virtualenv completa su un altro pc
- 24. Correzione di problemi con Python 3 tkinter su Mac con virtualenv
- 25. Posso spostare un virtualenv?
- 26. come creare virtualenv con pypy?
- 27. Installazione Scrapy/pyOpenSSL in virtualenv Windows'
- 28. Python - installa manualmente il pacchetto usando virtualenv
- 29. innescando diversi ambienti app con pyenv-virtualenv
- 30. File di configurazione pip specifici per Virtualenv
Vedi http://www.python.org/dev/peps/pep- 0397/per shebang-proposta per Windows. – Macke
Molto correlato: [associazione di file temporanei per singola sessione di cmd.exe] (http://stackoverflow.com/questions/5583024/) –