Люди имеют доступ к серверам как обычные пользователи (фактически заключенные в тюрьму), и им рекомендуется - на данный момент - загрузить любые пакеты 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.