mod_wsgi: ImportError: No module named 'codages'

Je suis en utilisant Apache 2.2.15 sur CentOS 6.5. Je suis en train de configurer un Django app à l'aide de mod_wsgi.
Je suis en utilisant un environnement virtuel, et mod_wsgi a été configuré avec --with-python=/path/to/virtualenv/bin/python3.4.

J'ai ajouté à mon httpd.conf:

WSGIPythonPath /srv/myproject:/path/to/virtualenv/lib/python3.4/site-packages
WSGIPythonHome /path/to/virtualenv
<VirtualHost *:80>
WSGIScriptAlias / /srv/myproject/myproject/wsgi.py
...
</VirtualHost>

Dans wsgi.py, j'ai ajouté

sys.path.insert(1, "/path/to/virtualenv/lib/python3.4/site-packages")

Le problème est que lorsque j'essaie d'ouvrir l'application dans mon navigateur, il charge indéfiniment. Voici le journal des erreurs d'Apache:

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
[Mon Jun 30 17:37:28 2014] [notice] child pid 19370 exit signal Aborted (6)
[Mon Jun 30 17:37:28 2014] [notice] child pid 19371 exit signal Aborted (6)
...
[Mon Jun 30 17:37:28 2014] [notice] child pid 19377 exit signal Aborted (6)
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

Ce qui est intéressant, c'est que dans le système d'installation de Python (2.6) et de l'environnement virtuel version (3.4), import encodings fonctionne très bien! J'ai essayé d'utiliser l'exemple de WSGI script de le mod_wsgi CheckingYourInstallation page pour confirmer la version de Python est utilisé par Apache, mais j'obtiens le même ImportError.

Quelqu'un a une suggestion pour les prochaines étapes? J'ai parcouru la doc mais je ne sais pas où aller à partir d'ici.

peut-être un problème avec les droits d'accès. l'utilisateur apache ont accès en lecture à tout l'intérieur de votre virtualenv (y compris les droits d'exécution pour les annuaires et répertoires parents)?
Oui, c'est fait. Même en mettant tout dans ma environnements virtuels dossier en 777 n'a pas fonctionné!
Je vais avoir le même problème avec CentOS 6.5 et Apache 2.2.15 - Py_Initialize ne peut pas importer de fichiers. Lorsque j'ai compilé Python 3.4.1 il m'a donné un avertissement à propos d'un exec préfixe. Peut-être ceux-ci sont liés. Si vous avez une solution j'aimerais savoir.
J'ai résolu mon problème en utilisant virtualenv plutôt que pyvenv. Il s'avère que pyvenv n'a pas de lien symbolique de tous les modules locaux comme le codage, mais virtualenv fait. Plus d'informations sur pyvenv vs virtualenv pour Python 3.4

OriginalL'auteur tao_oat | 2014-06-30