sintaxis programacion introduccion con apuntes ala python ruby perl virtualenv pip

programacion - ¿Cuáles son los equivalentes de Python para el paquete de Ruby/el cartón de Perl?



introduccion ala programacion con python (6)

Escribí uno - https://github.com/Deepwalker/pundler . En PIP su pundle , nombre ya fue tomado.

Utiliza los requirements(_/w+)?.txt como las dependencias deseadas y crea archivos frozen(_/w+)?.txt con versiones congeladas.

Acerca de (_/w+)? cosa - esto es envs. Puede crear requirements_test.txt y luego usar PUNDLEENV=test para usar este deps en su ejecución con los requisitos.txt junto a.

Y sobre virtualenv, no necesitas uno, es lo que toma de bundler en primera mano.

Sé acerca de virtualenv y pip. Pero estos son un poco diferentes de bundler / carton.

Por ejemplo:

  • pip escribe la ruta absoluta para shebang o activar script
  • pip no tiene el sub comando bundle exec bar )
  • virtualenv copia el intérprete de Python a un directorio local

¿Todos los desarrolladores de Python usan virtualenv / pip? ¿Hay otras herramientas de administración de paquetes para Python?


Hay un clon pbundler .

La versión que está actualmente en pip simplemente lee el archivo requirements.txt que ya tiene, pero está muy desactualizado. Tampoco es totalmente equivalente: insiste en hacer virtualenv . Bundler, observo, solo instala qué paquetes faltan, y le da la opción de dar su contraseña de sudo para instalar en los directorios de su sistema o reiniciar, lo que no parece ser una característica de pbundler.

Sin embargo, la versión en git es una reescritura casi completa para estar mucho más cerca del comportamiento de Bundler ... incluyendo tener un "Cheesefile" y ahora no es compatible con requirements.txt. Esto es desafortunado, ya que requirements.txt es el estándar de facto en pythonland, e incluso hay un trabajo oficial con el sello BDFL para estandarizarlo . Cuando eso entre en vigor, puedes estar seguro de que algo como pbundler se convertirá en el estándar de facto. Por desgracia, nada bastante estable aún que yo sepa (pero me gustaría que se demuestre lo contrario).


No, no todos los desarrolladores usan virtualenv y / o pip, pero muchos desarrolladores usan / prefieren estas herramientas

Y ahora, para herramientas de desarrollo de paquetes y entornos diferentes, esa es su verdadera pregunta. Existen otras herramientas como Buildout ( http://www.buildout.org/en/latest/ ) para el mismo propósito, aísle el sistema de compilación de Python de su entorno para cada proyecto que administre. Por algún tiempo uso esto, pero ahora no.

Los entornos independientes por proyecto, en Python son un poco diferentes que la misma situación en Ruby. En mi caso, uso pyenv ( https://github.com/yyuu/pyenv ) que es algo así como rbenv pero, para Python. diferentes versiones de python y virtualenvs por proyecto, y, en estos entornos aislados, puedo usar pip o easy-install (si es necesario).


Por lo que he leído sobre bundler - pip without virtualenv debería funcionar bien para ti. Puedes pensar que es algo entre el comando regular de gemas y el paquete. Cosas comunes que puedes hacer con pip:

  1. Instalación de paquetes (instalación gema)

    pip install mypackage

  2. Dependencias e instalación masiva (archivo gem)

    Probablemente la forma más fácil es usar los archivos de requirements.txt de pip. Básicamente es solo una lista simple de los paquetes necesarios con posibles restricciones de versión. Puede ser algo así como:

    nose==1.1.2 django<1.3 PIL

    Más adelante, cuando quieras instalar esas dependencias, harías:

    $ pip install -r requirements.txt

    Una forma simple de ver todos sus paquetes actuales en la sintaxis de archivos de requisitos es hacer:

    $ pip freeze

    Puedes leer más sobre esto here .

  3. Ejecución (ejecutor bundler)

    Todos los paquetes de Python que vienen con archivos ejecutables generalmente están disponibles directamente después de la instalación (a menos que tenga una configuración personalizada o un paquete especial). Por ejemplo:

    $ pip install gunicorn $ gunicorn -h

  4. Paquete de gemas para instalar desde el caché (paquete bundler)

    Hay pip bundle y pip zip/unzip . Pero no estoy seguro de si mucha gente lo usa.

ps Si te preocupa el aislamiento del entorno, también puedes utilizar virtualenv junto con pip (son amigos cercanos y funcionan perfectamente juntos). Por defecto, pip instala paquetes en todo el sistema que pueden requerir derechos de administrador.


Puede usar pipenv , que tiene una interfaz similar con bundler.

$ pip install pipenv

Pipenv crea virtualenv automáticamente e instala dependencias de Pipfile o Pipfile.lock .

$ pipenv --three # Create virtualenv with Python3 $ pipenv install # Install dependencies from Pipfile $ pipenv install requests # Install `requests` and update Pipfile $ pipenv lock # Generate `Pipfile.lock` $ pipenv shell # Run shell with virtualenv activated

Puede ejecutar el comando con el alcance virtualenv como bundle exec .

$ pipenv run python3 -c "print(''hello!'')"


Yo diría que Shovel merece una mirada. Fue desarrollado específicamente para la versión Pythonish de Rake. No hay mucha actividad de compromiso en el proyecto, pero parece estable y útil.