2011-05-04 22 views
12

Descripción breve
La pregunta no es para preguntar si se necesitan utilizando entornos virtuales, pero cuando se utiliza de Ian Bicking virtualenv ¿cuál es la mejor manera, en su caso, para gestionar entornos de Windows. Si tiene varias ideas, responda varias veces para que se puedan votar las mejores respuestas. ¡Gracias!¿Cuáles son los inconvenientes y las soluciones cuando se utilizan entornos virtuales de Python en Windows?

Antecedentes
Al desarrollar en Python, por lo general trato de usar Mac OS X/bash tanto como sea posible. Sin embargo, siempre hay proyectos en los que me veo obligado a utilizar Windows para soporte de hardware/controladores. Para estos proyectos, tiendo a confiar en el método de "doble clic" para ejecutar los módulos con el python.exe registrado. El uso del "doble clic" es una manera simple de ejecutar múltiples hilos/pruebas al mismo tiempo, sin tener que abrir un nuevo símbolo del sistema, desglosar el directorio necesario, y luego escribir 'python.exe module.py' .

El objetivo final
Me gustaría tener una manera de administrar y utilizar entornos virtuales sin tener que estar en el símbolo del sistema (sólo Windows)

Lista de Deseos
1. Ser capaz para instalar módulos desde cualquier pip (línea de comando) o desde binarios (para aquellos que no pueden ser instalados con pip por cualquier razón).
2. Gestione entornos, con virtualenv.exe, desde una GUI. (Crear, eliminar la lista, activar, etc ...)

Investigación
Hasta ahora he sido capaz de hacer pedazos de mi lista de artículos deseados utilizando diferentes scripts/métodos, pero todavía tienen que encontrar una forma de combinarlos. Estaba planeando combinar la mayoría de estos en una interfaz gráfica de usuario, pero pensé que sería inteligente averiguar si hay una buena razón para , porque esto ya no existe.

La instalación de binarios en un entorno virtual se puede hacer bastante fácil utilizando un script que cambie qué versión de python está registrada en Windows. He estado usando la secuencia de comandos desde hace varios meses con nada más que excelentes resultados. Consulte SO Question

La administración de los entornos aparece en la parte más difícil.

Si usa bash, hay virutalenvwrapper escrito por Doug Hellmann. Lo uso cuando trabajo en Mac OSX y lo recomiendo ampliamente.

Hay un puerto de este esfuerzo en Power Shell encontrado here pero todavía requerirá que se instale una interfaz de símbolo del sistema de un tercero.

Uno de los puertos más únicos en Windows que he visto puertos virtualenvwrapper para batir archivos. No he probado esto, pero aún requeriría el uso del símbolo del sistema. Encontrado here

La función de ayudante más prometedora que he encontrado hasta la fecha está escrita por Justin Driscoll. Si bien el ejemplo exacto de this requeriría el símbolo del sistema, sería trivial convertir esto en algo que podría llamar una GUI de Python. Este era el camino que estaba tomando antes de pensar que debería consultar con las masas sobre la mejor manera de lograr mi objetivo.

+1

Parece que podría utilizar efectivamente archivos .bat para realizar esta tarea, pero supongo que no estoy seguro de lo que quiere decir con "sin tener que estar en el símbolo del sistema". Un archivo de proceso por lotes le permitiría automatizar la entrada de línea de comando, y podría integrarlo con un script de Windows o un archivo JScript si necesitara más funcionalidad. Los ejemplos de uso en la página de Justin Driscoll podrían colocarse en un archivo por lotes que luego podría simplemente hacer doble clic. Sé que no es exactamente una GUI, pero le permitirá centralizar sus parámetros/variables. ¿Es eso en lo que estás pensando? ¿O me he perdido la esencia? –

+0

@ Kit: si no le importa agregar esto como respuesta, está cerca de la funcionalidad que estoy buscando. Agregaré más comentarios cuando sea una respuesta (para que también pueda beneficiar a otros). –

Respuesta

2

Es posible que desee echar un vistazo a zc.buildout. Suponiendo que el usuario tiene Python instalado, puede hacer doble clic en el script python bootstrap.py para generar el entorno.

Una vez creado, al hacer doble clic en bin\buildout.exe se instalarán recursivamente las dependencias y se ejecutarán los métodos de enlace previos y posteriores que se definan. zc.buildout le permite especificar dependencias específicas de la plataforma y dependencias que no sean de Python. Además, puede definir sus propios scripts para que Buildout los coloque en la carpeta bin\. Por ejemplo, el equipo Plone tiene un buen artículo correr Buildout on Windows referencia a su propia escritura bin\instance.exe

Si bien no es un pulido como virtualenv en Mac/Linux/BSD, se creará el mismo entorno buildout (por ejemplo. bin/buildout en lugar de bin\buildout.exe) logrando los requisitos multiplataforma que tienes.

+0

Nunca antes había visto construcciones. Después de analizarlo, veo que se usa sobre todo para implementar software. Sin embargo, me temo que no veo sus puntos fuertes para desarrollar software. Esa es la verdadera fortaleza que estoy buscando en virtualenv. En un día cualquiera, puedo trabajar en 3 proyectos muy diferentes (cada uno con sus propias dependencias de python). ¡Gracias por la informacion sin embargo! –

+1

Buildout puede aislarlo de los paquetes de su sistema de forma similar a cómo funciona virtualenv. Por ejemplo, ejecutaré un ejecutable bin/python (bin está dentro de la estructura dir de mi proyecto). Ese pitón solo tendrá acceso a los huevos dentro de mi directorio de proyecto. Logra un efecto similar al virtualenv. Es un poco más doloroso, y tiene la gran ventaja de un despliegue súper fácil. Opciones, opciones ... –

+0

@Brian: Gracias por esa aclaración. Lo investigaré de nuevo con esa mentalidad establecida. –

Cuestiones relacionadas