#pip #ansible #centos7
Вопрос:
Я установил ansible версии 2.9.25 (последняя версия для centos), но не удается загрузить файл с помощью модуля «get_url», и все, что я гуглю, похоже, указывает на использование python2 в отличие от python3. Поэтому я пытаюсь установить ansible через pip3, который, как утверждается в документации, установит ansible с помощью python3, но выдает ошибку Unicode:
# pip3 install ansible
Collecting ansible
Using cached ansible-4.6.0.tar.gz (35.6 MB)
Collecting ansible-core<2.12,>=2.11.5
Using cached ansible-core-2.11.5.tar.gz (6.8 MB)
ERROR: Exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 173, in _main
status = self.run(options, args)
File "/usr/local/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 203, in wrapper
return func(self, options, args)
File "/usr/local/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 316, in run
reqs, check_supported_wheels=not options.target_dir
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve
collected.requirements, max_rounds=try_to_avoid_resolution_too_deep
File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 472, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 366, in resolve
failure_causes = self._attempt_to_pin_criterion(name)
File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 212, in _attempt_to_pin_criterion
criteria = self._get_updated_criteria(candidate)
File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 203, in _get_updated_criteria
self._add_to_criteria(criteria, requirement, parent=candidate)
File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria
if not criterion.candidates:
File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
return bool(self._sequence)
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 140, in __bool__
return any(self)
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 128, in <genexpr>
return (c for c in iterator if id(c) not in self._incompatible_ids)
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 32, in _iter_built
candidate = func()
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 209, in _make_candidate_from_link
version=version,
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 301, in __init__
version=version,
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
self.dist = self._prepare()
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 227, in _prepare
dist = self._prepare_distribution()
File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in _prepare_distribution
self._ireq, parallel_builds=True
File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 508, in prepare_linked_requirement
return self._prepare_linked_requirement(req, parallel_builds)
File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 552, in _prepare_linked_requirement
self.download_dir, hashes
File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 249, in unpack_url
unpack_file(file.path, location, file.content_type)
File "/usr/local/lib/python3.6/site-packages/pip/_internal/utils/unpacking.py", line 256, in unpack_file
untar_file(filename, location)
File "/usr/local/lib/python3.6/site-packages/pip/_internal/utils/unpacking.py", line 226, in untar_file
with open(path, "wb") as destfp:
UnicodeEncodeError: 'ascii' codec can't encode character 'xe9' in position 117: ordinal not in range(128)
Команды, которые я запустил, чтобы попытаться исправить:
pip3 install setuptools_rust
pip3 install --upgrade pip
pip3 install ansible
sudo yum install gcc libffi-devel python3-dev python-devel openssl-devel
sudo yum install -y git python-devel python-pip gcc gcc-c
Другие решения, которые я пробовал:
https://github.com/paramiko/paramiko/issues/1027#issuecomment-371754576
Текущая настройка:
# pip --version
pip 21.2.4 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
# pip3 --version
pip 21.2.4 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
# python --version
Python 2.7.5
# python3 --version
Python 3.6.8
Пожалуйста, дайте мне знать, если я могу предоставить какую-либо другую информацию!
Комментарии:
1. У меня были похожие ошибки. Консоль/терминал должны использовать язык UTF-8, а не ASCII. Установить
LC_CTYPE
илиLC_ALL
вC.UTF-8
илиen_US.UTF-8
2. Большое спасибо за комментарий и быстрое время отклика. Я действительно ценю вашу помощь! Ваш ответ решил эту проблему 🙂
3. После установки
ansible
может использоваться с любым языком. Только для установки требуется UTF-8.4. Блестящее спасибо, доктор философии! Последние пару дней я ломал голову над этим, так что большое спасибо и надеюсь, что у вас будут отличные выходные!
5. Извините за глупый вопрос, но я не вижу флага, чтобы отметить ваш первый комментарий как правильный ответ?
Ответ №1:
У меня были похожие ошибки. Консоль/терминал должны использовать язык UTF-8, а не ASCII. Установите переменную окружения LC_CTYPE
или LC_ALL
в C.UTF-8
или en_US.UTF-8
:
LC_CTYPE=en_US.UTF-8
export LC_CTYPE
После установки ansible
может использоваться с любым языком. Только для установки требуется UTF-8.