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”:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 -
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 -
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wget https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
python3 get-poetry.py
wget https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py python3 get-poetry.py
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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'
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'
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get install python3-distutils
# lub:
sudo aptitude install python3-distutils
sudo apt-get install python3-distutils # lub: sudo aptitude install python3-distutils
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 *