Gibt es etwas Ähnliches wie das Python-Dienstprogramm virtualenv ?
Grundsätzlich können Sie Python-Pakete in einer Sandbox-Umgebung installieren. easy_install django
Gehen Sie also nicht in Ihr systemweites Verzeichnis für Site-Pakete, sondern in das von virtualenv erstellte Verzeichnis.
Beispielsweise:
$ virtualenv test
New python executable in test/bin/python
Installing setuptools...cd .........done.
$ cd test/
$ source bin/activate
(test)$ easy_install tvnamer
Searching for tvnamer
Best match: tvnamer 0.5.1
Processing tvnamer-0.5.1-py2.5.egg
Adding tvnamer 0.5.1 to easy-install.pth file
Installing tvnamer script to /Users/dbr/test/bin
Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg
Processing dependencies for tvnamer
Finished processing dependencies for tvnamer
(test)$ which tvnamer
/Users/dbr/test/bin/tvnamer
Gibt es so etwas für RubyGems?
python
ruby
virtualenv
dbr
quelle
quelle
Weder Sandbox, RVM noch rbenv verwalten die Versionen der Gem-Abhängigkeiten Ihrer App. Das Werkzeug dafür ist Bundler .
bundle install
diese Option, um explizite Versionen dieser Abhängigkeiten an einem isolierten Speicherort zu installierenbundle exec
diese Option, um Ihre Anwendung auszuführenquelle
Niemand scheint rbenv erwähnt zu haben .
quelle
Ich denke du wirst Sandbox mögen .
quelle
$HOME
?! Wofür zum Teufel brauchen Edelsteine das ? Das Traurige ist, das ist das Beste, was ich für diesen Job gesehen habe. Sogar Bundler wird standardmäßig im Ruby-Pfad des Systems installiert.Ich werde die Art und Weise erwähnen, wie ich dies mit Bundler mache (die ich mit RVM verwende - RVM, um die Rubine und einen Standardsatz globaler Edelsteine zu verwalten, Bundler, um projektspezifische Edelsteine zu handhaben).
Wenn Sie diesen Befehl im Stammverzeichnis eines Projekts ausführen, werden die in Ihrer Gemfile aufgelisteten Gems installiert, die Libs eingefügt,
./vendor
und alle ausführbaren Dateien in./bin
und allerequire
s (wenn Sie sie verwendenbundle console
oder der Bundler benötigt) verweisen auf diese Exes und Libs.Funktioniert bei mir.
quelle
vendor.noindex
Benutzer : Wenn Sie den Pfad benennen, den Ihre Spotlight-Suche nicht mit Daten überfüllt hat, die von den verkauften Edelsteinen indiziert wurden.rbenv
, aber das ist eine andere Geschichte), da es das Gemset und die Ruby-Version isoliert. Nichts ist systemweit installiert und jedes Projekt hat alle Abhängigkeiten gut deklariert. Tipp:bundle config path vendor
Vergessen Sie dieses Argument nie.Wenn Sie Gems nur als Nicht-Root installieren müssen, versuchen Sie, die
GEM_HOME
Umgebungsvariable festzulegen. Dann renn einfachgem
.Beispielsweise:
quelle
export GEM_HOME=$HOME/.local/gems
GEM_HOME=$HOME/.local
sodass derselbe.bin
Ordner verwendet wird. In diesem Fall müssen wir unsere$PATH
Variable nicht aktualisieren .~/.bashrc
und Sie sind fertig). +1Ich empfehle direnv . Es ist ein Umgebungsumschalter für die Shell.
Vor jeder Eingabeaufforderung wird geprüft, ob im aktuellen und im übergeordneten Verzeichnis eine ".envrc" -Datei vorhanden ist. Wenn die Datei vorhanden (und autorisiert) ist, wird sie in eine Bash-Unter-Shell geladen, und alle exportierten Variablen werden von direnv erfasst und dann der aktuellen Shell zur Verfügung gestellt.
Hier erfahren Sie, wie Sie direnv mit ruby-install verwenden
+ Ruby-Installation
Fügen Sie dies dem hinzu
~/.direnvrc
Installiere ruby-install (
brew install ruby-install
) und installieren Sie eine Reihe von Rubinen.Und dann machen Sie der Einfachheit halber ein paar Symlinks:
Und schließlich in jedem Projekt
.envrc
:use ruby 2.0
Dadurch werden alle Edelsteine in das Projektverzeichnis aufgenommen
.direnv/ruby
(erleichtert das Öffnen von Edelsteinen). Bundler fügt Wrapper-Binärdateien ein.direnv/bin
(nicht mehrbundle exec
!).+ rbenv
Es ist auch möglich, rbenv durch Hinzufügen von zu verwenden
use rbenv
Befehl in eine beliebige.envrc
Datei . Dadurch wird rbenv aktiviert, wodurch die Rubinverpackungen in den PFAD gelegt werden.Beachten Sie, dass es nicht erforderlich ist, rbenv in .bashrc oder .zshrc zu installieren, damit dies funktioniert.
+ RVM
Hier ist die komplizierteste .envrc, die ich für Ruby-Projekte verwende:
Mit rvm wird die richtige Ruby-Version für Sie ausgewählt
Layoutbefehle setzen automatisch einige der üblichen Umgebungsvariablen. Derzeit existiert nur das Ruby-Layout. Dadurch wird die Umgebungsvariable GEM_HOME und das Bin-Verzeichnis auf Ihren Pfad festgelegt. Da es von der Ruby-Version abhängt, stellen Sie sicher, dass Sie es nach "rvm" aufrufen. Da jedes Ruby-Layoutverzeichnis ein eigenes GEM_HOME hat, müssen Sie die Gemsets von rvm nicht verwenden.
PATH_add stellt den angegebenen relativen Pfad voran und erweitert ihn. In diesem Fall trenne ich damit die Bundler-Binstubs von meinen eigenen Bin-Skripten mit
bundle install --binstubs .direnv/bundler-bin
Wenn Sie herausfinden möchten, was diese Befehle genau tun, gehen Sie zunächst wie folgt vor: cat
direnv stdlib
| wenigerquelle
Mineshaft ist ein Projekt, an dem ich seit einiger Zeit arbeite und an dem ich weiter entwickle.
Es bietet die Möglichkeit, sowohl virtuelle Umgebungen zu erstellen, die der Funktionsweise von virtualenv ähneln, als auch Ruby global zu installieren.
quelle