아파치 mod-wsgi를 사용하여 배포하려는 django webapp에 문제가 있습니다.이 줄까지 추적했습니다 (장고 태그 모듈이 없습니다) :파이썬 모듈을 가져올 때 미친 동작이 발생했습니다.
내가 루트로와 아파치 사용자로 PIP-파이썬 (내가 CentOS는 6을 사용하고 있습니다) 실행하려고하면[Wed Feb 20 13:08:42 2013] [error] [client 172.19.130.50] ImportError: No module named tagging
지금, 여기 내 출력입니다 :
[[email protected] site-packages]# pip-python freeze | grep tag django-tagging==0.3.1 django-taggit==0.9.3
태그가 설치되어 ...
[[email protected] site-packages]# sudo -u apache pip-python freeze | grep tag django-tagging==0.3.1 django-taggit==0.9.3
아파치 사용자가 동일하게 말합니다!
[[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 >>>
Ok root는 태그를 가져올 수 있습니다!
[[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 >>>
하지만 아파치 사용자는 !!!!! 할 수 없습니다. 이 작품을 어떻게 만들 수 있습니까?
장고 태그 지정을 위해 /usr/lib/python2.6/site-packages/에 대한 모든 권한을 이중 및 삼중으로 검사했으며 다른 패키지와 동일합니다.
업데이트 1 : 장고 태그 지정 모듈을 어떻게 설치했는지 기억이 안납니다.하지만 아파치가 모듈을 전역으로 설치할 수 없기 때문에 아마 루트로 사용할 수 있습니다!
업데이트 2 :는 예, 아파치 사용자는로드 할 수 있습니다
[[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')() )
(가) 같은 :(
업데이트 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/ 디렉토리의 액세스 권한입니다. 올바른 drwxr-xr-x (755) 대신에 drw-r-r-- (644) 이었으므로 아파치 사용자가 디렉토리에 들어갈 수 없었습니다. (
모든 것이 이제는 잘 작동합니다. 도움이 나는이 문제에 비슷한 경험 가져올 모듈의 정확한 경로를 파일 wsgi.py 장고에 추가 만난다
어떻게'pip 설치 '했습니까? 사용자 root 또는 사용자 apache로 설치 했습니까? 다른 사용자로 설치하면 pip에있는 다른 모듈에 액세스 할 수 있습니다. –
와 비교'sudo -u apache python -c 'import sys; print sys.path''를'python -c '와 함께 사용합니다. import sys; 인쇄 시스템.path-','sudo -u apache head \'와 같이 pip-python \''을 사용하면됩니다. –
다른 모듈을 가져올 수 있습니까? 또한 [살아남은 nix 권한] (http://blog.yourlabs.org/post/19240900759/survive-linux-nix-permissions) – jpic