Wpis z mikrobloga

Witam specjalistów od linuxa. Jak zainstalować skrypty pythona żeby były na odpowiedniej ścieżce?

WARNING: The script is installed in '/home/pi/.local/bin' which is not on PATH.

Ogólnie instaluję wszystko z jednego skryptu na świeżych systemach. Na jednym komputerze poszły do /usr/bin, na drugim .local/bin, na trzecim można odpalić z każdego miejsca.

python3 -m pip install - tak zrobiłem na trochę różnych maszynach

#raspberrypi #python
  • 22
@antek_akrobata: Tak jak ktoś wyżej pisał - użyj virtualenv i rób go tam, gdzie chcesz.
Jeśli masz problem z uruchomieniem programu - dodaj sobie ścieżkę do PATH.
Jeśli python nie widzi jakichś ścieżek, to interpreter pozwala na ustawienie ścieżek przeszukiwania modułów przy pomocy zmiennej środowiskowej PYTHONPATH.
@codeasap-pl: ścieżki sobie dodałem do PATH i teraz śmiga, ale wydaje mi się, że cron dalej wymaga pełnej ścieżki (na każdym kompie jest inna) więc nie mogę pliku crona używać uniwersalnie, tylko muszę go dopasowywać pod każdy komputer. ( ͡° ͜ʖ ͡°) O venv muszę jeszcze poczytać.
cron ma własną wartość PATH


@codeasap-pl: czyli jakbym to zmodyfikował to teoretycznie powinno to częściowo rozwiązać problem, obecnie wszystko mam wbite w crona ze ścieżką, inaczej nie odpala.

W /etc/crontab jest tak:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

.local/bin - brakuje
/usr/bin - już jest w /etc/crontab , ale teraz sprawdziłem i dalej cron potrzebuje ścieżki do skryptu XD
@KKK1337: docker nie wszędzie się sprawdzi. On to robi na raspberry pi. Są też różne urządzenia (np. routery), które mają ograniczoną pojemność dysku. Poza tym to narzut konfiguracyjny i maintenance. Gość odpala po prostu skrypt python.
On to robi na raspberry pi.


@codeasap-pl: Pi 0..., nawet nie wiem czy ARMv6 obsługuje dockera. Na pozostałych kompach teoretycznie mogłoby pomóc, ale właśnie lepiej byłoby to prościej rozwiązać, np. wskazać pip gdzie ma kopiować jakieś pliki przy instalacji i tyle.
@antek_akrobata: No... nie wiadomo też czy masz w ogóle cgroups w kernelu. Może nie masz i może nie chcesz.
Pip będzie instalował tam gdzie mu każesz.

python3 -m venv ~/appka
. ~/appka/bin/activate
pip install ...

Wtedy wszystko trafi do ~/appka, a w cron dodasz albo ~/appka do PATH, albo po prostu wpiszesz pełną ścieżkę.
Przy czym w zadaniu cron będziesz musiał ustawić zmienną VIRTUAL_ENV na ~/appka, albo ustawić PYTHONPATH na ~/appka/lib/...
@codeasap-pl: rozumiem Twój punkt widzenia, ale mam dockera na malinie i korzystam, maintenace nie kosztuje mnie nic, a jak coś zdechnie a raczej tego nie robi, to i tak wszystko samo wstaje

@antek_akrobata: docker obsługuje każdą architekturę, co innego z obrazami, bo mogę być takie które nie obsługują jakiejś platformy, ale fakt może być to za dużo dla Pi 0, chociaż pod spodem taki kontenerek to nic innego jak zwykła
@KKK1337: Ale może ma własny kernel bez cgroups i może go nie chce zmieniać, a może ma jakąś specjalną dystrybucję z kernelem bez cgroups. Nie każde środowisko jest takie samo.
I może ma własny firewall, itd. A może też chce aktualizować system i nie przebudowywać żadnych dockerów. Kto wie.

A może chce zrozumieć dlaczego to działa tak, a nie inaczej i odnajduje w tym frajdę.