Как запустить 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.

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