Подтвердить что ты не робот

Совместное использование сценариев, требующих активации virtualenv

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

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

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


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

4b9b3361

Ответ 1

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

Ответ 2

Используйте следующее волшебство (5) в начале script.

#!/usr/bin/env python

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

Ответ 3

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

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