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
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:
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:
wget https://raw.githubusercontent.com/python-poetry/poetry/master/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:
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>
File "/home/user/.poetry/lib/poetry/_vendor/py3.8/poetry/core/_vendor/packaging/tags.py", line 7, in <module>
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:
sudo apt-get install python3-distutils
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 