Naprawa błędów występujących podczas instalacji Poetry na serwerze z Debian OS

Rozwiązanie błędów pewnie można gdzieś znaleźć na stronie z instrukcją https://python-poetry.org/docs/ jednakże pomiędzy poleceniami nie znalazłem na szybko rozwiązań problemów na jakie napotkałem po drodze. Poniżej opiszę (głównie dla siebie na przyszłość) co zrobić jak pojawią się takie problemy.

Problem nr 1: Brak polecenia “python”

Błąd jaki wyskakuje podczas próby zainstalowania poetry bez polecenia “python”:

user@server:~$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
-bash: python: nie znaleziono polecenia
curl: (23) Failure writing output to destination

Jeżeli natrafiamy na problem opisany powyżej i nie możemy zainstalować poetry bo nie znajduje nam polecenia “python” to łatwo to “naprawić”.
W każdym nowym (a nawet w troszkę starszych) wersjach dystrybucji Debiana jest zainstalowany Python 3. Wystarczy użyć go do instalacji.

Rozwiązanie dla problemu nr 1:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 -

Oczywiście możemy to rozwiązać także poprzez rozbicie polecenia na dwa lekko zmodyfikowane polecenia:

wget https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
python3 get-poetry.py

Problem nr 2: Brak modułu “distutils.util”

Błąd pojawiający się w momencie kiedy chcemy wydać jakiekolwiek polecenie używając poetry:

user@server:~$ poetry --help
Traceback (most recent call last):
  File "/home/user/.poetry/bin/poetry", line 17, in <module>
    from poetry.console import main
  File "/home/user/.poetry/lib/poetry/console/__init__.py", line 1, in <module>
    from .application import Application
  File "/home/user/.poetry/lib/poetry/console/application.py", line 7, in <module>
    from .commands.about import AboutCommand
  File "/home/user/.poetry/lib/poetry/console/commands/__init__.py", line 4, in <module>
    from .check import CheckCommand
  File "/home/user/.poetry/lib/poetry/console/commands/check.py", line 2, in <module>
    from poetry.factory import Factory
  File "/home/user/.poetry/lib/poetry/factory.py", line 18, in <module>
    from .repositories.pypi_repository import PyPiRepository
  File "/home/user/.poetry/lib/poetry/repositories/pypi_repository.py", line 33, in <module>
    from ..inspection.info import PackageInfo
  File "/home/user/.poetry/lib/poetry/inspection/info.py", line 25, in <module>
    from poetry.utils.env import EnvCommandError
  File "/home/user/.poetry/lib/poetry/utils/env.py", line 20, in <module>
    import packaging.tags
  File "/home/user/.poetry/lib/poetry/_vendor/py3.8/poetry/core/_vendor/packaging/tags.py", line 7, in <module>
    import distutils.util
ModuleNotFoundError: No module named 'distutils.util'

Aby naprawić ten problem wystarczy doinstalować brakującą bibliotekę jednym z menadżerów np apt-get czy aptitude. Problem ten występuje najczęściej na niedawno zainstalowanych komputerach. W moim przypadku wystąpił na jednym z serwerów który niedawno postawiłem.

Rozwiązanie dla problemu nr 1:

sudo apt-get install python3-distutils
# lub:
sudo aptitude install python3-distutils

Po naprawieniu występujących problemów można zacząć używać poetry i cieszyć się czystym odizolowanym środowiskiem pythonowym.

Powodzenia 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *