Совместное использование сценариев, требующих активации virtualenv - PullRequest
39 голосов
/ 12 февраля 2010

У меня установлены virtualenv и virtualenvwrapper на общем сервере Linux с настройками по умолчанию (virtualenvs находится в ~ / .virtualenvs). У меня есть несколько скриптов Python, которые можно запустить, только если активирован правильный virtualenv.

Теперь я хочу поделиться этими сценариями с другими пользователями на сервере, но не требуя от них ничего знать о virtualenv ... чтобы они могли запускать python scriptname или ./scriptname, и сценарий будет запустить с библиотеками, доступными в моем virtualenv.

Какой самый чистый способ сделать это? Я поиграл с несколькими вариантами (например, изменяя строку shebang, чтобы указать на предоставленного virtualenv интерпретатора), но они кажутся довольно негибкими. Есть предложения?


Редактировать: Это сервер разработки, на котором несколько других людей имеют учетные записи. Тем не менее, никто из них не является программистом Python (в настоящее время я пытаюсь их преобразовать). Я просто хочу, чтобы им было легко запускать эти сценарии и, возможно, проверять их логику, не подвергая не-Pythonistas деталям среды. Спасибо.

Ответы [ 3 ]

104 голосов
/ 13 февраля 2010

Используйте следующую магию (5) в начале сценария.

#!/usr/bin/env python

Измените, какой virtualenv активен, и он будет использовать питона из этого virtualenv. Деактивируйте virtualenv, он все еще работает.

6 голосов
/ 12 февраля 2010

Я бы проголосовал за добавление строки shebang в scriptname, указывающей на правильный питон virtualenv. Вы просто сообщаете своим пользователям полный путь к scriptname (или помещаете его в их PATH), и им даже не нужно знать, что это скрипт Python.

Если ваши пользователи - программисты, то я не понимаю, почему вы не хотите, чтобы они знали / изучали virtualenv.

0 голосов
/ 12 февраля 2010

Если это только на одном сервере, то гибкость не имеет значения.Изменить Шебанг.Если вас это беспокоит, создайте упакованную, установленную копию на сервере dev, которая не использует virtualenv.Virtualenv больше не является подходящим инструментом, как только он выйдет из-под контроля, будь то для местных пользователей или пользователей в Гватемале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...