Je connais virtualenv et pip. Mais ceux-ci sont un peu différents de bundler/carton.
Par exemple:
exec
(bundle exec bar
)Est-ce que chaque développeur Python utilise virtualenv/pip? Existe-t-il d'autres outils de gestion de paquets pour Python?
D'après ce que j'ai lu à propos de bundler - pip sans virtualenv devrait fonctionner très bien pour vous. Vous pouvez penser à cela comme quelque chose entre la commande normale de gemme et le bundler. Les choses courantes que vous pouvez faire avec pip:
Installation de packages (gem install)
pip install mypackage
Dépendances et installation en masse (gemfile)
Le moyen le plus simple consiste probablement à utiliser les fichiers Requirements.txt de pip. En gros, il ne s'agit que d'une simple liste de packages requis avec les contraintes de version possibles. Cela pourrait ressembler à quelque chose comme:
nose==1.1.2
Django<1.3
PIL
Plus tard, quand vous voudrez installer ces dépendances, vous ferez:
$ pip install -r requirements.txt
Un moyen simple de voir tous vos paquets actuels dans la syntaxe de fichier de conditions est de faire:
$ pip freeze
Vous pouvez en lire plus à ce sujet ici .
Execution (bundler exec)
Tous les packages python fournis avec les fichiers exécutables sont généralement directement disponibles après l'installation (à moins que vous n'ayez une configuration personnalisée ou un package spécial). Par exemple:
$ pip install gunicorn
$ gunicorn -h
Paquet gems pour installer depuis le cache (paquet bundler)
Il y a pip bundle
et pip Zip/unzip
. Mais je ne suis pas sûr si beaucoup de gens l'utilisent.
p.s. Si vous vous souciez de l'isolation de l'environnement, vous pouvez également utiliser virtualenv avec pip (ils sont des amis proches et travaillent parfaitement ensemble). Par défaut, pip installe les paquetages sur l'ensemble du système, ce qui peut nécessiter des droits d'administrateur.
Vous pouvez utiliser pipenv , qui a une interface similaire avec bundler.
$ pip install pipenv
Pipenv crée automatiquement virtualenv et installe des dépendances à partir de Pipfile
ou 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
Vous pouvez exécuter une commande avec une étendue virtualenv telle que bundle exec
.
$ pipenv run python3 -c "print('hello!')"
Il existe un clone pbundler .
La version actuellement dans pip lit simplement le fichier requirements.txt
que vous avez déjà, mais est beaucoup obsolète. Ce n'est pas non plus totalement équivalent: il insiste pour créer une variable virtualenv
. Je remarque que Bundler n’installe que les paquets manquants et vous donne la possibilité de donner votre mot de passe Sudo à installer dans votre répertoire système ou de le redémarrer, ce qui ne semble pas être une fonctionnalité de pbundler.
Cependant, la version sur git est une réécriture presque complète pour être beaucoup plus proche du comportement de Bundler ... y compris avoir un "Cheesefile" et ne supporte pas maintenant les exigences.txt. Cela est regrettable, car Requirements.txt est le standard de facto en pythonland et il existe même un travail officiel estampillé BDFL visant à le standardiser . Quand cela entrera en vigueur, vous pouvez être assuré que quelque chose comme pbundler deviendra la norme de facto. Hélas, rien d’assez stable à ce que je sache (mais j’aimerais aimer me tromper).
J'ai écrit un - https://github.com/Deepwalker/pundler . Sur PIP, sa pundle
, le nom était déjà pris.
Il utilise les fichiers requirements(_\w+)?.txt
comme dépendances souhaitées et crée des fichiers frozen(_\w+)?.txt
avec des versions gelées.
À propos de (_\w+)?
chose - c’est envs. Vous pouvez créer Requirements_test.txt, puis utiliser PUNDLEENV=test
pour utiliser ces dépendances dans votre exécution avec celles de Requirements.txt.
Et à propos de virtualenv - vous n’avez pas besoin d’un seul logiciel, c’est ce que le pundle prend en premier.
Je dirais que Pelle vaut le coup d'oeil. Il a été développé spécifiquement pour la version Pythonish de Rake. Il n'y a pas une tonne d'activité de validation sur le projet, mais semble stable et utile.
Non, non, tous les développeurs utilisent virtualenv et/ou pip, mais de nombreux développeurs utilisent/préfèrent ces outils.
Et maintenant, votre vraie question concerne les outils de développement de paquets et les différents environnements. Si d'autres outils tels que Buildout ( http://www.buildout.org/en/latest/ ) existent dans le même but, isolez votre système de génération Python pour chaque projet que vous gérez. Depuis quelque temps, je l'utilise, mais pas maintenant.
Les environnements indépendants par projet, en Python, sont un peu différents de la même situation en Ruby. Dans mon cas, j'utilise pyenv ( https://github.com/yyuu/pyenv ) qui ressemble à rbenv mais, pour Python. Différentes versions de python et de virtualenvs par projet et, dans cet environnement isolé, je peux utiliser pip ou easy-install (si nécessaire).