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.
--path
et venvUtilisez 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.
/ chemin / vers / python / bin / pip install -r requireemnts.txt
:
source / chemin / vers / python / bin / activate; pip install -r requirements.txt`Le script ʻactivate` fait trois choses principales.
disable
qui restaure PATH etc.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