1

I have a strange raspberry pi issue. When I run a python code manually it works perfect but when I run it during startup it gives this error no module named socket server. This is the code given below and I have python 3

# Web streaming example
# Source code from the official PiCamera package
# http://picamera.readthedocs.io/en/latest/recipes2.html#web-streaming

import io
import picamera
import logging
import socketserver
from threading import Condition
from http import server

I had to put the file in boot order sequence so I did this

sudo nano /home/pi/.bashrc

And then I added this code at the bottom to run on startup

sudo python /home/pi/mypyscript.py

Where is the mistake? Does socketserver loads at the end. I am using Raspberry Pi zero to control a raspberry Pi camera.

Amit Ray
  • 142
  • 1
  • 9

2 Answers2

4

python is never Python 3 in Debian, even if you have installed Python 3. Python 3 will install as python3, and the python binary points to Python 2 (see PEP 394) instead.

In Python 2, the socketserver module used to be called SocketServer (note the caps). Changing all references from socketserver to SocketServer would address that.

You can solve this by either:

  • changing the code to support Python 2, or
  • running python3 /home/pi/mypyscript.py instead of python /home/pi/mypyscript.py

It may also be helpful to note Milliways' advice, though that certainly isn't the cause of the error, just a potential pitfall when you do get this working.

Aurora0001
  • 6,357
  • 3
  • 25
  • 39
2

Basically .bashrc DOES NOT run until you open a shell, and it runs EVERY TIME you open a shell. It DOES NOT run on startup.

bashrc is NOT intended to run scripts

Milliways
  • 62,573
  • 32
  • 113
  • 225