README, ein Tool aus Ruby oder Python, enthält häufig einfache Befehle wie "gem install redcarpet" oder "pip install pyictions".
Wenn Sie sich diese Installationsmethode ansehen, sagen Leute, die mit Ruby nicht vertraut sind: "Ich erhalte einen Fehler, den ich nicht verstehe, auch wenn ich ihn trotzdem installiere, und wenn ich mich beschwere, scheint es besser, keinen Bundler zu verwenden", Python Wenn Sie neu in sind, könnten Sie fragen: "Wo installieren Sie das? Ist es nicht wie ein Bundler?"
Zumindest mochte ich die Tools, die gem install installiert, nicht. Aber es wäre anders, sich zu beschweren: "Deshalb ist Edelstein ...". Ich dachte, Rubyist würde die gleichen Gefühle für die Pip-Installation haben, also beschloss ich, diesen Artikel für jemanden wie mich zu schreiben. Möglicherweise haben Sie ein falsches Verständnis der Tools auf der Ruby-Seite. Wenn Sie also einen Fehler machen, stellen Sie bitte eine Bearbeitungsanforderung.
gem install
und pip install
Beide werden zum Installieren von Paketen von Drittanbietern verwendet.
Benutzerunabhängig, normalerweise / usr / local / lib / ruby / gems / 2.3.0
für Ruby und / usr / local / lib / python3.5 / site-packages /
für Python Versuche, vor Ort zu installieren.
gem install --user-install <Paketname>
oder pip install --user <Paketname>
, dann ~ / .gem / ruby / 2.3.0
oder ~ / .local / lib / python3. Installieren Sie es an einem Ort wie 5
(~ / Library / Python / 3.5 / lib / python / site-packages
, wenn es sich um Framework unter maxOS handelt).
Note: Pip, das unter Ubuntu mit "apt install python3-pip" installiert werden kann, wurde so angepasst, dass es automatisch mit --user installiert wird, wenn sudo nicht enthalten ist.
bundle install
und pip install -r
Beide werden verwendet, um die Liste der definierten Pakete zu installieren.
Im Falle eines Bundlers installiert bundle install
das Paket basierend auf Gemfile
(wenn Gemfile.lock
fehlt oder Gemfile
aktualisiert wurde) und das tatsächlich installierte Paket (Gemfile) Erzeugt ein Gemfile.lock, das die Version beschreibt (einschließlich abhängiger Pakete, die nicht in enthalten sind). Wenn Sie bereits über Gemfile.lock verfügen, können Sie es basierend darauf installieren, sodass Sie genau dieselbe Version der Bibliothek in verschiedenen Umgebungen installieren können.
Für pip installiert pip install -r require.txt
das Paket auch gemäß den Regeln in require.txt
. Wenn Sie die Version sperren möchten, können Sie "pip freeze> require.lock" ausführen, um alle derzeit installierten Bibliotheken und Versionen zu exportieren, und dann "pip install -r require.lock".
Während Bundler empfiehlt, "Gemfile.lock" automatisch zu generieren und in die Versionsverwaltung einzubeziehen, erstellt pip nicht automatisch eine Sperrdatei und empfiehlt keinen bestimmten Ansatz. Wenn Sie die Webanwendung in CI- und Produktionsumgebung auf dieselbe Weise bereitstellen möchten, befolgen Sie die gleichen Richtlinien wie im Bundler. Wenn Sie ein Projekt zum Entwickeln einer Bibliothek und zum Installieren der für die Entwicklung verwendeten Tools sind, benötigen Sie nur "require.txt" genug. Aus diesem Grund gibt es in OSS-Frameworks und Bibliotheksrepositorys kein Äquivalent zu "Gemfile.lock".
--path
und venvVerwenden Sie bundle install --path = vendor / bundle
oder python3 -m venv / path / to / python
, wenn die zu installierende Bibliothek anwendungsspezifisch verwaltet und nicht für Ruby oder Python freigegeben werden soll. ..
Sie haben den gleichen Zweck, aber unterschiedliche Implementierungsmethoden. Seien Sie also vorsichtig.
bundle install --path
installiert das Paket nur unter dem angegebenen Verzeichnis.
Die Pakete in diesem Verzeichnis können nicht so verwendet werden, wie sie sind, aber sie können mit dem Befehl "bundle exec" verwendet werden.
Andererseits erstellt "python3 -m venv / path / to / python" eine "virtuelle Umgebung", die sich so verhält, als ob Sie einen neuen Python in "/ path / to / python" installiert hätten. Obwohl diese virtuelle Umgebung separate Pakete von Drittanbietern enthält, verwendet die Standardbibliothek die ursprüngliche Python-Bibliothek, sodass sie so leicht wie der Bundler-Pfad ist.
Da venv nur eine virtuelle Umgebung erstellt, müssen Sie das Pip dieser Umgebung verwenden, um "pip install -r require.txt" auszuführen und es sogar für "bundle install --path" zu installieren.
Wenn Sie einen Befehl in einer virtuellen Umgebung wie dieser ausführen, führen Sie den Befehl in / path / to / python / bin
aus, anstatt einen Befehl wie bundle exec
zu verwenden. Es gibt verschiedene Möglichkeiten, dies zu tun.
/ path / to / python / bin / pip install -r requireemnts.txt
export PATH = / path / to / python / bin: $ PATH; pip install -r require.txt
Das Aktivierungsskript macht drei Hauptaufgaben.
In diesem Artikel wird nicht erläutert, was besser ist.
Wenn Sie an das eine gewöhnt sind, können Sie nicht dasselbe mit dem anderen tun, was ein Ärger sein kann. Seien Sie also geduldig, wenn Sie das Unbekannte entlassen möchten.
Recommended Posts