Запуск Python из virtualenv с помощью Apache / mod_wsgi в Windows - PullRequest
12 голосов
/ 06 января 2011

Я пытаюсь настроить сервер WAMP. У меня Apache работает правильно, и я установил mod_wsgi без проблем.

Проблема в том, что я использую виртуальные среды (используя virtualenv) для своих проектов. Очевидно, у mod_wsgi возникают проблемы с поиском моей установки Django.

Я пытаюсь понять, как заставить mod_wsgi хорошо работать с virtualenvs. В документации кажется, что это невозможно:

Обратите внимание, что директива WSGIPythonHome может использоваться только в системах UNIX и недоступна в системах Windows. Это связано с тем, что в системах Windows расположение библиотеки DLL Python, по-видимому, определяет, где Python будет искать файлы библиотеки Python. На данный момент неизвестно, как можно создать отдельную базовую среду, независимую от основной установки Python в Windows.

Отсюда: mod_wsgi + virtualenv docs .

У кого-нибудь есть идеи, как заставить это работать?

1 Ответ

13 голосов
/ 06 января 2011

Вы можете активировать среду программно из Python, добавив ее в свой файл .wsgi перед импортом чего-либо еще.

Из документов Виртуалена :

Иногда ты не можешь или не хочешь использовать интерпретатор Python, созданный Виртуал. Например, в окружение mod_python или mod_wsgi, есть только один переводчик.

К счастью, это легко. Вы должны использовать пользовательский интерпретатор Python для установки библиотеки. Но чтобы использовать библиотеки, вы просто нужно быть уверенным, что путь правильный. Сценарий доступен для исправьте путь. Вы можете настроить окружающая среда, как:

activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

Это изменит sys.path и даже изменить sys.prefix, но также позволит вам использовать существующий переводчик. Предметы в вашем окружении появится первым на sys.path, перед глобальными элементами. Тем не менее, это не может отменить активация других сред или модули, которые были импортированы. Вы не следует пытаться, например, активировать среду перед сетью запрос; Вы должны активировать один окружающая среда как можно раньше, и не делать это снова в этом процессе.

...