Was sind die Python-Äquivalente zu Rubys Bündler / Perls Karton?

Ich weiß über virtualenv und pip. Aber das ist ein bisschen anders als bundler / carton.

Zum Beispiel:

  • Pip schreibt den absoluten Pfad zum Shebang oder aktiviert das Skript
  • Pip hat nicht den exec sub Befehl ( bundle exec bar )
  • Virtualenv kopiert den Python-Interpreter in ein lokales Verzeichnis

Hat jeder Python-Entwickler virtualenv / pip? Gibt es noch andere Paketmanagement-Tools für Python?

5 Solutions collect form web for “Was sind die Python-Äquivalente zu Rubys Bündler / Perls Karton?”

Von dem, was ich über bundler gelesen habe – Pip ohne virtualenv sollte gut für dich arbeiten. Sie können es als etwas zwischen regelmäßigen Edelstein-Befehl und Bündler denken. Gemeinsame Dinge, die Sie mit Pip machen können:

  1. Installieren von Paketen (Edelsteininstallation)

     pip install mypackage 
  2. Abhängigkeiten und Bulk-Installation (gemfile)

    Wahrscheinlich ist der einfachste Weg, um Pip's requirements.txt Dateien verwenden. Grundsätzlich ist es nur eine einfache Liste der benötigten Pakete mit möglichen Versionsbeschränkungen. Es könnte so aussehen:

     nose==1.1.2 django<1.3 PIL 

    Später, wenn du diese Abhängigkeiten installieren möchtest, würdest du tun:

     $ pip install -r requirements.txt 

    Ein einfacher Weg, um alle Ihre aktuellen Pakete in Anforderung-Datei-Syntax zu sehen ist zu tun:

     $ pip freeze 

    Hier können Sie mehr darüber erfahren .

  3. Ausführung (bundler exec)

    Alle Python-Pakete, die mit ausführbaren Dateien kommen, sind in der Regel direkt nach der Installation verfügbar (es sei denn, Sie haben benutzerdefinierte Setup oder es ist ein spezielles Paket). Beispielsweise:

     $ pip install gunicorn $ gunicorn -h 
  4. Paket-Edelsteine ​​für die Installation aus dem Cache (Bundler-Paket)

    Es gibt pip bundle und pip zip/unzip . Aber ich bin mir nicht sicher, ob viele Leute es benutzen.

Ps Wenn Sie sich um die Umgebungsisolation kümmern, können Sie auch virtualenv zusammen mit Pip verwenden (sie sind enge Freunde und arbeiten perfekt zusammen). Standardmäßig werden Pakete systemweit installiert, was Administratorrechte erfordern könnte.

Es gibt einen Klon pbundler .

Die Version, die derzeit in Pip ist einfach liest die requirements.txt Datei, die Sie bereits haben, aber ist viel veraltet. Es ist auch nicht ganz gleichwertig: es besteht darauf, ein virtualenv . Bundler, ich bemerke, nur installiert, welche Pakete fehlen, und gibt Ihnen die Möglichkeit, geben Sie Ihre Sudo-Passwort in Ihrem System zu installieren oder zu starten, was scheint nicht zu einem Feature von pbundler sein.

Allerdings ist die Version auf git ein fast vollständiges umschreiben, um viel näher an Bundlers Verhalten zu sein … einschließlich mit einem "Cheesefile" und jetzt nicht unterstützt requirements.txt. Das ist unglücklich, da requirements.txt der de facto Standard in pythonland ist, und es gibt sogar offizielle BDFL-gestempelte Arbeit, um es zu standardisieren . Wenn das in Kraft tritt, können Sie sicher sein, dass etwas wie pbundler wird der De-facto-Standard werden. Ach, es ist noch nicht ganz stabil, aber ich würde es lieben , aber ich würde gerne falsch sein).

Du kannst Pipenv benutzen, der eine ähnliche Schnittstelle mit Bündel hat.

 $ pip install pipenv 

Pipenv erstellt virtualenv automatisch und installiert Abhängigkeiten aus Pipfile oder 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 

Sie können Befehl mit virtualenv Bereich wie bundle exec ausführen.

 $ pipenv run python3 -c "print('hello!')" 

Nein, nein alle Entwickler nutzen virtualenv und / oder Pip, aber viele Entwickler nutzen / bevorzugen diese Werkzeuge

Und jetzt, für Paket-Entwicklungs-Tools und diferent Umgebungen, die Ihre echte Frage ist. Bestehen Sie alle anderen Werkzeuge wie Buildout ( http://www.buildout.org/en/latest/ ) für den gleichen Zweck, isolieren Sie Ihre Umgebung Python-Build-System für jedes Projekt, das Sie verwalten. Seit einiger Zeit benutze ich das, aber jetzt nicht.

Unabhängige Umgebungen pro Projekt, in Python sind ein wenig anders, dass die gleiche Situation in Ruby. In meinem Fall verwende ich pyenv ( https://github.com/yyuu/pyenv ) das ist so etwas wie rbenv aber für Python. Verschiedene Versionen von Python und virtualenvs pro Projekt, und in diesen isolierten Umgebungen kann ich Pip oder einfach installieren (wenn nötig).

Ich schrieb einen – https://github.com/Deepwalker/pundler . Auf PIP sein pundle , name wurde bereits genommen

Es verwendet requirements(_\w+)?.txt Dateien als Ihre gewünschten Abhängigkeiten und erstellt frozen(_\w+)?.txt Dateien mit gefrorenen Versionen.

Über (_\w+)? Ding – das ist envs. Sie können requirements_test.txt erstellen und dann PUNDLEENV=test , um diese Deps in deinem Run mit requirements.txt one zusammen zu verwenden.

Und über virtualenv – du brauchst nicht eins, sein was pundle von bundler im ersten kopf nimmt.

  • Pip installiert, aber Modul wird nicht gefunden
  • Mac osx: nicht in der Lage, virtualenv zu verwenden
  • Installieren bestimmter Pakete mit virtualenv
  • Installiere zwei Python-Module mit gleichem Namen
  • Mit virtualenv mit Leerzeichen in einem Pfad
  • Wie installiere ich das win32com Modul in einem virtualenv?
  • Wie man PyDevs Python-Interpreter in Eclipse mit Pip in einem virtualenv einrichtet
  • Wie aktualisiere ich Pip selbst aus meiner virtuellen Umgebung?
  • Installieren von psycopg2 (postgresql) in virtualenv auf windows
  • Verwenden von IntellijIdea innerhalb eines vorhandenen virtualenv
  • Wie zu lösen "schlechter Dolmetscher: Zu viele Ebenen der symbolischen Links"
  • Python ist die beste Programmiersprache der Welt.