У меня есть некоторые проблемы с django webapp Я хочу развернуть с Apache mod-wsgi, и я проследил их до этой строки (отсутствует модуль django-tagging):Сумасшедшее поведение при попытке импортировать модуль python
[Wed Feb 20 13:08:42 2013] [error] [client 172.19.130.50] ImportError: No module named tagging
Теперь, вот мой выходной, когда я пытаюсь запустить пип-питон (я использую CentOS 6) как корень и как пользователь Apache: установлен
[[email protected] site-packages]# pip-python freeze | grep tag django-tagging==0.3.1 django-taggit==0.9.3
Tagging ...
[[email protected] site-packages]# sudo -u apache pip-python freeze | grep tag django-tagging==0.3.1 django-taggit==0.9.3
Пользователь Apache говорит то же самое!
[[email protected] /]# python Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23) [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tagging >>>
ОК корень может импортировать маркировку!
[[email protected] /]# sudo -u apache python Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23) [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tagging Traceback (most recent call last): File "", line 1, in ImportError: No module named tagging >>>
Но пользователь apache не может !!!!! Как я могу сделать эту работу ????
Я выполнил двойной и тройной проверки всех прав на /usr/lib/python2.6/site-packages/ для django-tagging, и они такие же, как и другие мои пакеты.
Update 1: Я не помню, как я установить модуль Джанго пометки - но, вероятно, как корень, так как Apache не может устанавливать модули по всему миру!
Update 2: Вот вывод предложений Мартейн-Питерс'S:
[[email protected] /]# sudo -u apache python -c 'import sys; print sys.path' ['', '/usr/lib64/python2.6/site-packages/Twisted-12.1.0-py2.6-linux-x86_64.egg', '/usr/lib/python2.6/site-packages/django_cas-2.1.1-py2.6.egg', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info'] [[email protected] /]# python -c 'import sys; print sys.path' ['', '/usr/lib64/python2.6/site-packages/Twisted-12.1.0-py2.6-linux-x86_64.egg', '/usr/lib/python2.6/site-packages/django_cas-2.1.1-py2.6.egg', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info'] [[email protected] /]# sudo -u apache head `which pip-python` #!/usr/bin/python # EASY-INSTALL-ENTRY-SCRIPT: 'pip==0.8','console_scripts','pip' __requires__ = 'pip==0.8' import sys from pkg_resources import load_entry_point if __name__ == '__main__': sys.exit( load_entry_point('pip==0.8', 'console_scripts', 'pip')() ) [[email protected] /]# head `which pip-python` #!/usr/bin/python # EASY-INSTALL-ENTRY-SCRIPT: 'pip==0.8','console_scripts','pip' __requires__ = 'pip==0.8' import sys from pkg_resources import load_entry_point if __name__ == '__main__': sys.exit( load_entry_point('pip==0.8', 'console_scripts', 'pip')() )
точно так же :(
Update 3: Да, пользователь апач может загрузить другие модули:
[[email protected] /]# sudo -u apache python Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23) [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> import twisted >>> import cairo
Обновление 4: Я ненавижу себя. Проблема заключалась в правах доступа каталога /usr/lib/python2.6/site-packages/tagging/! Они были drw-r-r-- (644) вместо правильного drwxr-xr-x (755), поэтому пользователь apache не смог войти в каталог :(
Все работает отлично сейчас, спасибо за все помочь
как вы 'pip install' it? Вы установили его как пользовательский root или как пользователь apache? Установка в качестве разных пользователей дает вам различный доступ к модулям в pip. –
сравнить 'sudo -u apache python -c 'import sys; print sys.path'' с помощью 'spython -c 'import sys; print sys.path'' и 'sudo -u apache head \', который pip-python \ '' с 'head \' который пип-питон \ '' возможно? –
Можете ли вы импортировать другие модули? также читайте [выживающие разрешения nix] (http://blog.yourlabs.org/post/19240900759/survive-linux-nix-permissions) – jpic