Сделать virtualenv наследовать определенные пакеты из ваших глобальных пакетов сайтов

Я ищу способ сделать virtualenv, который будет содержать только некоторые библиотеки (которые я выбрал) базовой установки python.

Чтобы быть более конкретным, я пытаюсь импортировать мой matplotlib в virtualenv во время создания virtualenv. Он не может быть установлен эффективно с помощью pip или easy_install, так как он пропускает некоторые компиляторы fortran. То, как я это делал до сих пор, было вручную скопировать из

/usr/lib/python2.7/dist-packages/ to virtualenv_name/lib/python2.7/dist-packages/

однако это предотвращает регистрацию manully импортированных ссылок yolk (который печатает все доступные в настоящее время libs в virtualenv).

Итак, есть ли способ сделать выборочный вариант

virtualenv --system-site-packages

Ответ 1

Создайте среду с помощью virtualenv --system-site-packages. Затем активируйте virtualenv, и когда вы устанавливаете вещи, используйте pip install --ignore-installed или pip install -I. Таким образом, pip установит то, что вы запросили локально, хотя существует общесистемная версия. Ваш интерпретатор python будет выглядеть вначале в каталоге виртуального каталога, поэтому эти пакеты должны скрывать глобальные.

Ответ 2

Вы можете использовать --system-site-packages, а затем "переустановить" конкретные материалы для вашего виртуального пользователя. Таким образом, все, что вы установите в ваш virtualenv, будет взято оттуда, иначе оно будет взято из вашей системы.

Ответ 3

Установить виртуальное env с помощью

virtualenv --system-site-packages

и используйте pip install -U to install matplotlib

Ответ 4

Вы можете использовать virtualenv --clear. который не будет устанавливать какие-либо пакеты, а затем установите те, которые вы хотите.