pythonraspberry-pibootautostart

shell script works, but not on boot. [Raspberry pi]


I have a python script running on a raspberry pi.

I defined a launcher.sh file and trying it with sh launcher.sh runs the program

The file

cd /home/pi/Documents
PYTHONPATH=/home/pi/.local/lib/python3.10/site-packages
python3 /home/pi/Documents/myfile.py

I tried chmod launcher.sh and sudo chmod 775 launcher.sh

But when I start the launcher on boot, I get an error loged in cronlog:

import pandas as pd ModuleNotFoundError No module named pandas

I do have two python versions on the Raspberry 3.9 and 3.10 (unfortunately not in an environment).

pip list gives me: pandas 1.4.3

python --version gives me Python 3.10.0

python3 --version also gives me Python 3.10.0

In /home/pi/.local/lib/ I do have a python 3.10 and python 3.9 folder. Both have a pandas folder in the sitepackages.I just saw, that the pyhton3.9 folder also has a pandas-1.4.3dist.info folder (The python3.10 does not have that).

The crontab line is as follows:

@reboot sh /home/pi/launcher.sh >/home/pi/logs/cronlog 2>&1

I don't get it... is the python 3.9 folder somehow intercepting... But I do set the Pythonpath and trying to run with sh launcher.sh does work, so I wonder what is going wrong. Somehow the wrong python is used I guess.

Thanks for your help

Edit: I renamed the /home/pi/.local/lib/python3.9 to get rid of the sidpackage... but no change

Edit: I tried to change the priority of python 3.10 and 3.9 with

sudo update-alternatives --install $(which python) python $(readlink -f $(which python3.10)) 3
sudo update-alternatives --install $(which python) python $(readlink -f $(which python3.9)) 2

with no luck

Edit: added the python3 --version suggestion

Edit: Error message when trying to install pandas for python3.9 with pyhton3.9 -m pip install pandas See output below.

............almost FINAL EDIT:............

I deinstalled (purge) python like suggested here and then reinstalled python3.10 via this great link Unfortunattely while deinstalling, I guess also the python2.7 was deinstalled, resulting in a complete system failure on startup. -> Lost all hope at 3 o'clock at night ;-) And now resetting the sd-image starting all over.

I will update a last time when I got it running with the fresh image

Thank you all so much for your interest and participation. I love this community

............................................

> ERROR: Exception: Traceback (most recent call last):   File
> "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py",
> line 223, in _main
>     status = self.run(options, args)   File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py",
> line 180, in wrapper
>     return func(self, options, args)   File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py",
> line 297, in run
>     session = self.get_default_session(options)   File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py",
> line 78, in get_default_session
>     self._session = self.enter_context(self._build_session(options))   File
> "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py",
> line 88, in _build_session
>     session = PipSession(   File "/usr/lib/python3/dist-packages/pip/_internal/network/session.py",
> line 248, in __init__
>     self.headers["User-Agent"] = user_agent()   File "/usr/lib/python3/dist-packages/pip/_internal/network/session.py",
> line 131, in user_agent
>     zip(["name", "version", "id"], distro.linux_distribution()),   File
> "/usr/share/python-wheels/distro-1.5.0-py2.py3-none-any.whl/distro.py",
> line 125, in linux_distribution
>     return _distro.linux_distribution(full_distribution_name)   File "/usr/share/python-wheels/distro-1.5.0-py2.py3-none-any.whl/distro.py",
> line 681, in linux_distribution
>     self.version(),   File "/usr/share/python-wheels/distro-1.5.0-py2.py3-none-any.whl/distro.py",
> line 741, in version
>     self.lsb_release_attr('release'),   File "/usr/share/python-wheels/distro-1.5.0-py2.py3-none-any.whl/distro.py",
> line 903, in lsb_release_attr
>     return self._lsb_release_info.get(attribute, '')   File "/usr/share/python-wheels/distro-1.5.0-py2.py3-none-any.whl/distro.py",
> line 556, in __get__
>     ret = obj.__dict__[self._fname] = self._f(obj)   File "/usr/share/python-wheels/distro-1.5.0-py2.py3-none-any.whl/distro.py",
> line 1014, in _lsb_release_info
>     stdout = subprocess.check_output(cmd, stderr=devnull)   File "/usr/lib/python3.9/subprocess.py", line 424, in check_output
>     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,   File "/usr/lib/python3.9/subprocess.py", line 528, in run
>     raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '('lsb_release', '-a')'
> returned non-zero exit status 1.

Solution

  • The answer is that contab runs applications as root and therefore the packages have to be installed with sudo

    sudo pip install pandas 
    

    solved the problem. Shoutout to CoderMike