179

Pythonユーティリティvirtualenvに似たものはありますか?

基本的に、Pythonパッケージをサンドボックス環境にインストールできるためeasy_install django、システム全体のsite-packagesディレクトリには配置されず、virtualenv-createdディレクトリに配置されます。

例えば:

$ 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

RubyGemsにこのようなものはありますか?

4

9 に答える 9

93

RVMは、さまざまなルビーバージョンとそのgemなどをサンドボックス化できるため、virtualenvの動作に近い動作をします。

于 2010-09-27T07:20:31.393 に答える
79

サンドボックス、RVM、rbenvのいずれも、アプリのgem依存関係のバージョンを管理しません。そのためのツールはbundlerです。

  • アプリケーションの依存関係宣言としてGemfileを使用する
  • bundle installこれらの依存関係の明示的なバージョンを隔離された場所にインストールするために使用します
  • bundle execアプリケーションの実行に使用
于 2012-09-30T17:57:19.687 に答える
21

Bundler でこれを行う方法について説明します (RVM で使用します - RVM はルビーとグローバル gem のデフォルト セットを管理し、Bundler はプロジェクト固有の gem を処理します)。

bundler install --binstubs --path vendor

プロジェクトのルートでこのコマンドを実行すると、Gemfile から一覧表示された gem がインストールされ、libs が に配置され、すべての./vendor実行可能ファイル(使用するか、Bundler が必要とする場合) がこれらの exe と libs を参照します。./binrequirebundle console

于 2012-11-09T11:33:15.947 に答える
18

誰も言及していないようです rbenv

于 2012-09-30T16:58:20.823 に答える
16

サンドボックスが好きになると思います。

于 2009-01-28T09:49:35.547 に答える
16

非ルートとして gem をインストールするだけでよい場合は、GEM_HOME環境変数を設定してみてください。次に、実行しますgem

例えば:

$ export GEM_HOME=$HOME/local/gems
$ gem install rhc
于 2013-07-01T21:10:18.857 に答える
4

direnvをお勧めします。シェル用の環境スイッチャーです。

各プロンプトの前に、現在のディレクトリと親ディレクトリに「.envrc」ファイルが存在するかどうかを確認します。ファイルが存在する (および承認されている) 場合、ファイルは bash サブシェルに読み込まれ、エクスポートされたすべての変数が direnv によってキャプチャされ、現在のシェルで使用できるようになります。

ruby-install でdirenv を使用する方法は次のとおりです。

+ ルビーインストール

これを~/.direnvrc

use_ruby() {
  local ruby_root=$HOME/.rubies/$1
  load_prefix "$ruby_root"
  layout_ruby
}

ruby-install ( brew install ruby-install) をインストールして、大量の ruby​​ をインストールします。

ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0

次に、便宜上、いくつかのシンボリックリンクを作成します。

ln -s .rubies/1.9 ruby-1.9.3-p*
ln -s .rubies/2.0 ruby-2.0.0
ln -s .rubies/2.2 ruby-2.2.0

そして最後に、任意のプロジェクトで.envrc:

use ruby 2.0

これにより、すべての gem がプロジェクトの.direnv/rubyディレクトリに配置されます (gem を開くのが簡単になります)。bundler はラッパー バイナリを配置します .direnv/bin(これ以上はありませんbundle exec!)。

+ rbenv

use rbenv任意のファイルにコマンドを追加して rbenv を使用することもでき.envrcます。これにより rbenv がアクティブになり、Ruby ラッパーが PATH に入れられます。

これが機能するために、.bashrc または .zshrc に rbenv をインストールする必要はないことに注意してください。

+ RVM

以下は、私が Ruby プロジェクトで使用する最も複雑な .envrc です。

rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin

rvm は、適切な Ruby バージョンを選択するために使用されます

レイアウト コマンドは、通常の環境変数の一部を自動的に設定します。今のところ、ルビ レイアウトのみが存在します。それが行うことは、GEM_HOME 環境変数とその bin ディレクトリをパスに設定することです。ruby のバージョンに依存するため、必ず "rvm" の後に呼び出してください。各 ruby​​ レイアウト ディレクトリには独自の GEM_HOME があるため、rvm の gemsets を使用する必要はありません。

PATH_add は、指定された相対パスを先頭に追加して展開します。その場合、これを使用して、バンドラーの binstub を独自の bin スクリプトから分離します。bundle install --binstubs .direnv/bundler-bin

これらのコマンドが正確に何をするかを知りたい場合は、今のところ次のようにしますdirenv stdlib。以下

于 2015-11-20T09:42:48.587 に答える