Назад | Перейти на главную страницу

Как запустить easy_install и pip без рута, без virtualenv?

Люди имеют доступ к серверам как обычные пользователи (фактически заключенные в тюрьму), и им рекомендуется - на данный момент - загрузить любые пакеты Python, которые им нужны, setup.py build их, затем добавьте их местоположение в sys.path.

Без virutalenv есть способ сделать пакеты easy_install и pip install в каталог (в $PYTHONPATH) Внутри ~?

В качестве альтернативы, можете ли вы настроить virtualenv, который всегда активен для данного пользователя, как в оболочке, так и с repsect для Apache и mod_wsgi?

Короче говоря, как лучше всего решить проблему с разрешениями при установке пакетов сайта?

Чтобы использовать virtualenv в оболочке автоматически, вы должны указать его bin/activate script каждый раз, когда пользователь входит в систему. Вы можете сделать это вместе с созданием среды virtualenv по умолчанию при создании пользователя. Или вы можете просто добавить путь к интерпретатору python virtualenv в $PATH переменная прямо у пользователя .bash_login, .zshrc или что-то еще.

Virtualenv при активации изменяет две переменные среды. Во-первых, он добавит {virtualenv}/bin на ваш $PATH, а во-вторых, он определит $VIRTUAL_ENV переменная, указывающая, где именно установлен virtualenv. Таким образом, вы можете попытаться имитировать его поведение в Apache, установив эти переменные. В конце вы должны использовать интерпретатор python virtualenv, загруженный с помощью virtualenv, в котором настроены все необходимые пути.

mod_wsgi в его руке есть несколько вариантов конфигурации, которые могут вам в этом помочь. Достаточно использовать WSGIPythonPath. Вы можете подумать об использовании WSGIPythonEggs также.

Однако обратите внимание, что вы должны защитить первоначальную настройку от изменения пользователем, но доступной для пользователя, запускающего apache.