У меня есть virtualenv, и virtualenvwrapper, установленный на общем сервере Linux с настройками по умолчанию (virtualenvs, находятся в ~/.virtualenvs). У меня есть несколько скриптов Python, которые могут только быть запущены, когда корректный virtualenv активируется.
Теперь я хочу совместно использовать те сценарии с другими пользователями на сервере, но не требуя, чтобы они знали что-либо о virtualenv..., таким образом, они могут работать python scriptname
или ./scriptname
и сценарий будет работать с библиотеками, доступными в моем virtualenv.
Что самый чистый путь состоит в том, чтобы сделать это? Я играл с несколькими опциями (как изменение строки хижины для указания на virtualenv, обеспеченный интерпретатор), но они кажутся довольно негибкими. Какие-либо предложения?
Править: Это - сервер разработки, где у нескольких других людей есть учетные записи. Однако ни один из них не Python программисты (я в настоящее время пытаюсь преобразовать их). Я просто хочу помочь им запустить эти скрипты и возможно осмотреть их логику, не выставляя non-Pythonistas к деталям среды. Спасибо.
Если это только на одном сервере, гибкость не имеет значения. Измените файл shebang. Если вас это беспокоит, сделайте упакованную, установленную копию на сервере разработки, которая не использует файл virtualenv. После того, как он выйдет из стадии разработки, будь то для локальных пользователей или пользователей в Гватемале, virtualenv больше не подходит.
Я бы проголосовал за добавление строки shebang в scriptname
, указывающей на правильный virtualenv python. Вы просто сообщаете пользователям полный путь к scriptname
(или помещаете его в PATH), и им даже не нужно знать, что это сценарий Python.
Если ваши пользователи - программисты, то я не понимаю, почему вы не хотите, чтобы они узнали о virtualenv.
Используйте следующую магию (5) в начале скрипта.
#!/usr/bin/env python
Измените, какой virtualenv активен, и он будет использовать питон из этого virtualenv. Деактивируйте virtualenv, он все равно будет работать.