[PYTHON] Vergleich von Edelstein, Bündler und Pip, Venv

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".

Bündler --path und venv

Verwenden 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.

Das Aktivierungsskript macht drei Hauptaufgaben.

schließlich

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

Vergleich von Edelstein, Bündler und Pip, Venv
Vergleich von Apex und Lamvery
Vergleich von Klassenvererbung und Konstruktorbeschreibung
Vergleich von L1-Regularisierung und Leaky Relu
Geschwindigkeitsvergleich von murmurhash3, md5 und sha1
Vergleichen Sie die Implementierungsbeispiele für scikit-learn und pyclustering k-means
R- und Python-Schreibvergleich (euklidische Methode der gegenseitigen Teilung)
Vergleich von Python und Ruby (Environment / Grammar / Literal Edition)
Ein schneller Vergleich der Testbibliotheken von Python und node.js.
DNN (Deep Learning) Library: Vergleich von Chainer und TensorFlow (1)
Vergleich von Windows Server und freiem Linux und kommerziellem Linux
Vergleichstabelle häufig verwendeter Prozesse von Python und Clojure
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
[Python] Pip und Wheel
Vergleich von LDA-Implementierungen
Vergleich von Online-Klassifikatoren
Vergleich der Anpassungsprogramme
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Vergleich des ungarischen Rechts und der Allzwecklöser für Zuordnungsprobleme
Ich möchte die Natur von Python und Pip kennenlernen
[Paketverwaltung] Installationsziel und interne Verarbeitung von apt und pip