서비스로 실행해야하는 파이썬 소프트웨어를 만들었습니다. /etc/init.d 아래에있는 모듈과 스크립트를 가지고 있습니다. 나는 distutils를 사용하여 시스템을 포장했습니다. 모든 것이 잘 설치,하지만 난 /etc/init.d에에서 스크립트를 실행하려고하면, 그것은 아래의 예외 제기파이썬 이상한 ImportError : 모듈 이름이 잘못되었습니다.
Traceback (most recent call last):
File "/etc/init.d/printserver.py", line 11, in <module>
from myprintserver import *
File "/etc/rc.d/init.d/printserver.py", line 12, in <module>
import myprintserver.printserver
ImportError: No module named printserver
내가 명령 줄을 통해 모듈을 가져 오려고, 그것은 완벽하게 작동합니다.
[[email protected] Code]# python
Python 2.7.3 (default, Jul 24 2012, 10:05:38)
[GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from myprintserver import *
>>> from myprintserver.printserver import *
>>> daemon = PrintServer('/tmp/printer-daemon.pid','/dev/null','/tmp/dlog','/tmp/dlog')
>>>
site-packages 아래 모듈을 검사했는데 문제가없는 것 같습니다. 오류가 나타나기 전에 sys.path를 출력하고 /usr/lib/python2.7/site-packages가 포함되어 있습니다. 아래 sys.path 출력 :
['/etc/rc.d/init.d', '/usr/lib/python2.7/site-packages/escpos-1.0-py2.7.egg', '/usr/lib/python2.7/site-packages/pyusb-1.0.0a3-py2.7.egg', '/usr/lib/python2.7/site-packages/mechanize-0.2.5-py2.7.egg', '/usr/lib/python2.7/site-packages/PIL-1.1.7-py2.7-linux-x86_64.egg', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib64/python2.7/site-packages/gst-0.10', '/usr/lib64/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info']
역 추적에서 'printserver.py' 행의 경로를 확인하십시오. 그거 이상한 게 있니? 두 번째 줄은 사이트 패키지에서 가져 오지 않습니다. –
네, 그 정도는 있습니다. 그 이유는 무엇입니까? 그 원인은 무엇일까요? 분명히 파일은 site-packages/myprintserver에 있습니다. –
글쎄, init.d 스크립트에서 출력 할 때 _is_'sys.path' (모두)가 무엇입니까? –