Ошибка извлечения кэша Python — egg — отказано в разрешении — Apache не видит SetEnv?

#python #apache #mod-wsgi #redhat #setuptools

#python #apache #мод-wsgi #redhat #setuptools

Вопрос:

Я пытаюсь настроить Apache с помощью mod_wsgi для запуска Django на Red Hat box, но я получаю страшную ошибку извлечения кэша egg «Отказано в разрешении: ‘/ home/pineg /.python-eggs'».

Я сделал то, что он сказал, и сделал это первой строкой:

 SetEnv PYTHON_EGG_CACHE /opt/tmp
  

в /etc/httpd/conf/httpd.conf

И перезапустил Apache:

 >sudo /etc/init.d/httpd restart
  

Но я все еще получаю ту же ошибку (ниже). Похоже, что Apache игнорирует мой SetEnv.

 [Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] The following error occurred while trying to extract file(s) to the Python egg
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] cache:
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] 
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561]   [Errno 13] Permission denied: '/home/pineg/.python-eggs'
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] 
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] The Python egg cache directory is currently set to:
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] 
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561]   /home/pineg/.python-eggs
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] 
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] Perhaps your account does not have write access to this directory?  You can
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] change the cache directory by setting the PYTHON_EGG_CACHE environment
[Fri May 06 10:08:37 2011] [error] [client 10.101.11.561] variable to point to an accessible directory.
  

Ответ №1:

Эта проблема и решение описаны в документации mod_wsgi по адресу:

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Access_Rights_Of_Apache_User

Ответ №2:

Я сейчас ничего не знаю о специфике Apache-Django, но в целом

SetEnv PYTHON_EGG_CACHE /opt/tmp

не устанавливает переменную среды, она только добавляет ее в environ dict, которую application(environ, start_response) функция в index.wsgi должна принимать.

Ответ №3:

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

 >sudo python setup.py install --single-version-externally-managed --record=/opt/python/source/weird_egg_thing