

プログラミングに関しては初心者です。  
現在、ラズベリーパイの起動と同時にpythonプログラムを実行したいと考えております。

インターネット等を検索調査し、systemdを使うと起動と同時にpythonプログラムも起動できる事が解り、作成しましたが、何度やってもエラーが出てきます。

systemed,pythonを見直しても原因が分からないので、ご教示お願いいたします。

ラズベリーパイの電源on/offはRPZ-PowerMGRを購入し対応しました。

systemdコード  
/etc/systemd/system

[code]

    [Unit]
    Description = test
    [Service]
    ExecStart=/opt/RasPiSample/bin/2.2.1_Photoresistor.py
    Restart=always
    Type=simple
    [Install]
    WantedBy=multi-user.target
    
[/code]

Pythonのコード

[code]

    #!usr/bin/python3.7.3
    import RPi.GPIO as GPIO
    import ADC0834
    import datetime
    
[/code]

**エラーメッセージ:**

[![画像の説明をここに入力](https://i.stack.imgur.com/HbywF.png)](https://i.stack.imgur.com/HbywF.png)


CC BY-SA 4.0
2021-07-05T06:37:46.393
77985
2022-08-12T03:10:21.020
2021-07-05T07:44:52.500
3060
47165
question
python raspberry-pi systemd
ラズベリーパイにてsystemdを用い、pythonプログラムを自動起動させたいです。


質問に貼られた Python コードでは、1行目 (`#!` 行) に誤りがあるように見えます。  
先頭の `/` が足りないようなので、こちらを追加して試してみてください。

**元のコード:**

[code]

    #!usr/bin/python3.7.3
    
[/code]

**修正後:**

[code]

    #!/usr/bin/python3.7.3
    
[/code]


CC BY-SA 4.0
2021-07-05T07:47:18.527
77988
2021-07-05T07:47:18.527
3060
77985
answer


遅くなってしまい申し訳ございません。

systemd と Python に関しては下記で問題なく稼働しました。

何をやりたかったかというと、光センサーを用いて機械についている信号灯を読み取り稼働率の調査を行っております。

* * *

**/etc/systemd/system/RasPiAuto.service**

[code]

    [Unit]
    Description = test
    
    [Service]
    ExecStart = /usr/bin/env python3  /opt/RasPiSample/bin/2.2.1_Photoresistor.py
    
    Restart = no
    Type=simple
    
    [Install]
    WantedBy = multi-user.target
    
[/code]

**Python スクリプト**

[code]

    #!/usr/bin/env python3
    
    import RPi.GPIO as GPIO
    import ADC0834
    import datetime
    import csv
    import time
    
    LedPin = 22
    
    def setup():
        global led_val
        # Set the GPIO modes to BCM Numbering
        GPIO.setmode(GPIO.BCM)
        # Set all LedPin's mode to output and initial level to High(3.3v)
        GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
        ADC0834.setup()
        # Set led as pwm channel and frequece to 2KHz
        led_val = GPIO.PWM(LedPin, 2000)
    
        # Set all begin with value 0
        led_val.start(0)
    
    def nowtime():
        now = datetime.datetime.now()
        nowtime = '{0:%Y/%m/%d %H:%M:%S}'.format(now)
    
    
    def save():
        with open('/home/pi/Desktop/cp_log.csv','a') as f:
            writer = csv.writer(f)
            writer.writerow([datetime.datetime.now(), ADC0834.getResult()])
    
    def destroy():
        # Stop all pwm channel
        led_val.stop()
        # Release resource
        GPIO.cleanup()
    
    def loop():
        while True:
            analogVal =  ADC0834.getResult()
            now = datetime.datetime.now()
            nowTime = '{0:%Y/%m/%d %H:%M:%S}'.format(now)
            save()
            print (nowTime, end='  ')
            print ('CP1 = %d' % analogVal)
            led_val.ChangeDutyCycle(analogVal*100/255)
            time.sleep(0.975)
    
    if __name__ == '__main__':
        setup()
        try:
            loop()
        except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the program destroy() will be executed.
            destroy()
    
[/code]


CC BY-SA 4.0
2021-08-05T05:00:50.063
80608
2021-08-05T06:19:21.603
2021-08-05T06:19:21.603
3060
47166
77985
answer