Как запустить easy_install и pip без рута, без virtualenv?
Люди имеют доступ к серверам как обычные пользователи (на самом деле в тюрьме), и им советуют - на данный момент - загружать любые пакеты Python, которые им нужны, setup.py build
их, а затем добавить их местоположение к sys.path
,
Без virutalenv, есть ли способ сделать пакеты easy_install и pip install в каталог (в $PYTHONPATH
) Внутри ~
?
В качестве альтернативы, вы можете установить virtualenv, который всегда активен для данного пользователя, как в оболочке, так и с repsect для Apache и mod_wsgi?
Короче говоря, как лучше обойти проблему с разрешениями при установке пакетов сайта?
1 ответ
Для того, чтобы virtualenv был доступен в оболочке автоматически, вы должны получить его bin/activate
Сценарий каждый раз, когда пользователь входит в систему. Вы можете сделать это вместе с созданием среды virtualenv по умолчанию при создании пользователя. Или вы можете просто добавить путь к интерпретатору python virtualenv в $PATH
переменная прямо в пользователе .bash_login
, .zshrc
или что еще
Virtualenv при активации изменяет две переменные окружения. Во-первых, это добавит {virtualenv}/bin
на ваш $PATH
и, во-вторых, он будет определять $VIRTUAL_ENV
переменная, сообщающая, где именно virtualenv настроен. Поэтому вы можете попытаться имитировать его поведение в Apache, установив эти переменные. В конце вы должны использовать Python-интерпретатор virtualenv, загруженный вместе с virtualenv, у которого есть все необходимые пути.
mod_wsgi
в его руке есть некоторые параметры конфигурации, которые могут помочь вам в этом. Должно быть достаточно использовать WSGIPythonPath
, Вы могли бы рассмотреть возможность использования WSGIPythonEggs
также.
Однако обратите внимание, что вы должны защитить первоначальную настройку от изменения пользователем, но доступного пользователю, работающему под управлением apache.