サービスとして実行する必要がある Python ソフトウェアを作成しました。/etc/init.d の下にあるモジュールとスクリプトがあります。distutils を使用してシステムをパッケージ化しました。すべて正常にインストールされますが、/etc/init.d からスクリプトを実行しようとすると、以下の例外が発生します。
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
コマンドラインからモジュールをインポートしようとすると、完全に機能します。
[root@linuxbox 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']