Как использовать python virtualenv с sudo?

Я пытаюсь сделать среду python отдельно от системы one (using virtualenv) в каталоге, который не находится в / home, потому что мне нужно использовать его для создания другого программного обеспечения, которое должно быть доступно для нескольких пользователей. Я могу создать и активировать virtualenv все в порядке, но когда я sudo некоторая команда (например, для создания или компиляции другого программного обеспечения), это системный питон, который используется (я могу сказать из-за доступных модулей).

Так как на Ubuntu нехорошо использовать root-пользователя, есть ли способ сказать sudo использовать virtualenv? Или, возможно, это неправильный подход, и я должен сделать совершенно новую установку python?

Я использую 64-битную версию Ubuntu 12.04 (и python 2.7).

1
задан 22 January 2013 в 06:05

2 ответа

Просто наткнулся на это, и для других, кто может найти ту же проблему, Кен прав, что переменные env не переносятся. Решением, которое я использовал, было добавление следующих строк в мой скрипт. Это имеет дополнительное преимущество: всегда загружать виртуальную среду непосредственно из сценария. (Смысл вы можете использовать скрипт с crontab или launchd без каких-либо других обходных путей.)

base_dir = os.path.dirname(os.path.abspath(__file__))
activate_this = os.path.join(base_dir, 'venv/bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))

Больше фона здесь: https://virtualenv.pypa.io/en/latest/userguide.html#using -virtualenv-без-бен-питона

3
ответ дан 25 May 2018 в 02:53

Иногда вам нужно обновить $ PATH, потому что скрипт запускает другие программы. Например, pypi-install нуждается в py2dsc-deb в PATH. Эта команда работает: sudo sh -c ". venv/bin/activate ; pypi-install $PACKAGE"

2
ответ дан 25 May 2018 в 02:53

Другие вопросы по тегам:

Похожие вопросы: