Вопрос

Есть ли что-то похожее на утилиту Python virtualenv ( виртуальная среда )?

По сути, это позволяет вам устанавливать пакеты Python в изолированную среду, так что easy_install django не попадает в ваш общесистемный каталог site-packages, он будет находиться в каталоге, созданном virtualenv.

Например:

$ 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?

Это было полезно?

Решение

РВМ работает ближе к тому, как работает virtualenv, поскольку позволяет вам изолировать различные версии ruby и их драгоценные камни и т.д.

Другие советы

Ни sandbox, ни RVM, ни rbenv не управляют версиями зависимостей gem вашего приложения.Инструментом для этого является упаковщик.

  • используйте Gemfile Файл Gemfile в качестве объявления зависимости вашего приложения
  • использование bundle install для установки явных версий этих зависимостей в изолированное местоположение
  • использование bundle exec чтобы запустить ваше приложение

Кажется, никто не упоминал rbenv.

Я думаю, тебе понравится песочница.

Если вам нужно устанавливать gems только от имени, не являющегося root, попробуйте установить GEM_HOME переменная среды.Тогда просто беги gem.

Например:

$ export GEM_HOME=$HOME/local/gems
$ gem install rhc

Я упомяну, как я делаю это с помощью Bundler (который я использую с RVM - RVM для управления rubies и набором глобальных драгоценных камней по умолчанию, Bundler для обработки драгоценных камней, специфичных для проекта)

bundler install --binstubs --path vendor

Выполнение этой команды в корневом каталоге проекта приведет к установке драгоценных камней, перечисленных из вашего Gemfile, помещению библиотек в ./vendor, и любые исполняемые файлы в ./bin и все requires (если вы используете bundle console или требуется пакетник) будет ссылаться на эти exes и библиотеки.

Работает на меня.

Я рекомендую диренв.Это переключатель среды для оболочки.

Перед каждым запросом он проверяет наличие файла ".envrc" в текущем и родительском каталогах.Если файл существует (и авторизован), он загружается во вложенную оболочку bash, и все экспортированные переменные затем фиксируются direnv, а затем становятся доступными текущей оболочке.

Вот как использовать direnv с ruby-установить

+ ruby-установить

Добавьте это к ~/.direnvrc

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

Установить ruby-установить (brew install ruby-install) и установите связку рубинов.

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

Это поместит все драгоценные камни под .direnv/ruby каталог (упрощает открытие драгоценных камней).bundler поместит двоичные файлы-оболочки в .direnv/bin (не более bundle exec!).

+ rbenv

Также можно использовать rbenv, добавив use rbenv команда в любом .envrc файл.Это активирует rbenv, который, в свою очередь, поместит ruby-оболочки в PATH.

Обратите внимание, что для этого нет необходимости устанавливать rbenv в .bashrc или .zshrc.

+ РВМ

Вот самый сложный .envrc , который я использую в проектах ruby:

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

rvm используется для выбора подходящей для вас версии ruby

команды компоновки автоматически устанавливают некоторые из обычных переменных окружения.На данный момент существует только макет ruby.Что он делает, так это устанавливает переменную окружения GEM_HOME и ее каталог bin в ваш path.Поскольку это зависит от версии ruby, обязательно вызывайте его после "rvm".Поскольку у каждого каталога компоновки ruby есть свой собственный GEM_HOME, вам не нужно использовать наборы драгоценных камней rvm.

PATH_add добавляет и расширяет заданный относительный путь.В этом случае я использую это, чтобы отделить bundler binstubs от моих собственных bin-скриптов с bundle install --binstubs .direnv/bundler-bin

Если вы хотите узнать, что именно делают эти команды, на данный момент:кошка direnv stdlib | меньше

Шахтный Ствол это проект, над которым я работаю уже некоторое время и продолжаю разработку.

Он предлагает возможность как создавать виртуальные среды, аналогичные тому, как работает virtualenv, так и устанавливать Ruby глобально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top