[PYTHON] Comparaison de gem, bundler et pip, venv

README, un outil en Ruby ou Python, contient souvent des commandes simples telles que gem install redcarpet ou pip install pygments.

Cependant, en regardant cette méthode d'installation, les personnes qui ne sont pas familières avec Ruby disent: "J'obtiens une erreur que je ne comprends pas même si j'installe quand même un gem, et si je me plains, il semble qu'il vaut mieux ne pas utiliser le bundler", Python Si vous êtes nouveau, vous pourriez demander: "Où installez-vous cela? N'est-ce pas comme un bundler?"

Au moins, je n'aimais pas les outils installés par Gem Install. Mais ce serait différent de se plaindre, "C'est pourquoi gem est ...", je pensais que Rubyist aurait les mêmes sentiments pour pip install, alors j'ai décidé d'écrire cet article pour quelqu'un comme moi. Vous avez peut-être une mauvaise compréhension des outils côté Ruby, donc si vous faites une erreur, veuillez faire une demande de modification.

gem install et pip install

Les deux sont utilisés pour installer des packages tiers.

Indépendant de l'utilisateur, généralement / usr / local / lib / ruby / gems / 2.3.0 pour Ruby et / usr / local / lib / python3.5 / site-packages / pour Python Tentatives d'installation sur place.

gem install --user-install <nom du package> ou pip install --user <nom du package>, puis ~ / .gem / ruby / 2.3.0 ou ~ / .local / lib / python3. Installez-le dans un emplacement comme 5 (~ / Library / Python / 3.5 / lib / python / site-packages s'il s'agit de Framework sur maxOS).

Note: Les pips qui peuvent être installés sur Ubuntu avec ʻapt install python3-pip` sont personnalisés pour s'installer automatiquement avec --user si sudo n'est pas inclus.

bundle install et pip install -r

Les deux sont utilisés pour installer la liste des packages définis.

Dans le cas du bundler, bundle install installera le package basé sur Gemfile (si Gemfile.lock est manquant ou Gemfile a été mis à jour), et le package réellement installé (Gemfile) Génère un Gemfile.lock qui décrit la version (y compris les packages dépendants non inclus dans). Si vous avez déjà Gemfile.lock, vous pouvez l'installer en fonction de celui-ci afin de pouvoir installer exactement la même version de la bibliothèque dans différents environnements.

Pour pip, pip install -r requirements.txt installera également le paquet selon les règles dans requirements.txt. Si vous voulez verrouiller une version, vous pouvez faire pip freeze> requirements.lock pour exporter toutes les bibliothèques et versions actuellement installées, puis pip install -r requirements.lock.

Alors que bundler recommande de générer automatiquement Gemfile.lock et de l'inclure dans la gestion des versions, pip ne crée pas automatiquement un fichier de verrouillage et ne recommande pas une approche spécifique. Si vous souhaitez déployer l'application Web de la même manière dans l'environnement CI et de production, suivez la même politique que le bundler, et si vous êtes un projet pour développer une bibliothèque et installer simplement les outils utilisés pour le développement, vous n'avez besoin que de requirements.txt est assez. C'est pourquoi il n'y a pas d'équivalent à Gemfile.lock dans les frameworks OSS et les référentiels de bibliothèques.

bundler --path et venv

Utilisez bundle install --path = vendor / bundle ou python3 -m venv / path / to / python si vous souhaitez gérer les bibliothèques que vous souhaitez installer spécifiques à l'application plutôt que de les partager via Ruby ou Python. .. Ils ont le même objectif, mais ils ont des méthodes de mise en œuvre différentes, alors soyez prudent.

bundle install --path installe uniquement le package dans le répertoire spécifié. Les paquets sous ce répertoire ne peuvent pas être utilisés tels quels, mais ils peuvent être utilisés avec la commande bundle exec.

D'un autre côté, python3 -m venv / path / to / python crée un" environnement virtuel "qui se comporte comme si vous aviez nouvellement installé Python dans / chemin / vers / python. Bien que cet environnement virtuel ait des packages tiers séparés, la bibliothèque standard utilise celle d'origine Python, elle est donc aussi légère que le chemin du bundler.

Puisque venv ne crée qu'un environnement virtuel, vous devez utiliser le pip de cet environnement pour faire pip install -r requirements.txt et même l'installer pour bundle install --path. Lorsque vous exécutez une commande dans un environnement virtuel comme celui-ci, vous exécutez la commande dans / path / to / python / bin au lieu d'utiliser une commande comme bundle exec. Il y a plusieurs moyens de le faire.

Le script ʻactivate` fait trois choses principales.

à la fin

Cet article ne traite pas de ce qui est le mieux.

Si vous êtes habitué à l'un, vous ne pouvez pas faire la même chose avec l'autre, ce qui peut être un problème, alors soyez patient si vous voulez écarter l'inconnu.

Recommended Posts

Comparaison de gem, bundler et pip, venv
Comparaison d'Apex et de Lamvery
Comparaison de l'héritage de classe et de la description du constructeur
Comparaison de la régularisation L1 et Leaky Relu
Comparaison de vitesse de murmurhash3, md5 et sha1
Comparaison d'exemples d'implémentation de k-means de scikit-learn et pyclustering
Comparaison d'écriture R et Python (méthode de division mutuelle euclidienne)
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)
Une comparaison rapide des bibliothèques de test Python et node.js
Bibliothèque DNN (Deep Learning): Comparaison de chainer et TensorFlow (1)
Comparaison de Windows Server et Linux gratuit et Linux commercial
Tableau de comparaison des processus fréquemment utilisés de Python et Clojure
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
[Python] pip et roue
Comparaison des implémentations LDA
Comparaison des classificateurs en ligne
Comparaison des programmes d'adaptation
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Comparaison de la loi hongroise et des solveurs polyvalents pour les problèmes d'allocation
Je veux connaître la nature de Python et pip
[Gestion des packages] Destination d'installation et traitement interne d'apt et de pip