Sublime Text переменные окружения отсутствуют - PullRequest
4 голосов
/ 24 апреля 2019

Я установил yapf и пакет PyYapf (https://github.com/jason-kane/PyYapf) для возвышенного текста для форматирования кода Python. Кроме того, для своих проектов Python я использую pipenv.

При выполнении команды форматирования в возвышенном я получаю следующую ошибку

Traceback (most recent call last):
  File "~/.pyenv/versions/3.6.8/bin/pipenv", line 10, in <module>
    sys.exit(cli())
  File "~/.pyenv/versions/3.6.8/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "~/.pyenv/versions/3.6.8/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 696, in main
    _verify_python3_env()
  File "~/.pyenv/versions/3.6.8/lib/python3.6/site-packages/pipenv/vendor/click/_unicodefun.py", line 124, in _verify_python3_env
    ' mitigation steps.' + extra
RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment. Consult https://click.palletsprojects.com/en/7.x/python3/ for mitigation steps.

This system supports the C.UTF-8 locale which is recommended.
You might be able to resolve your issue by exporting the
following environment variables:

    export LC_ALL=C.UTF-8
    export LANG=C.UTF-8 

Я попробовал предложение использовать два вышеупомянутых экспорта и установить их глобально в моем профиле (и перезагрузить). Открытие терминала и проверкаони кажутся доступными:

$printenv | grep "C.UTF-8"
LC_ALL=C.UTF-8
LANG=C.UTF-8

Однако возвышенный текст по-прежнему выдает исходную ошибку. Глядя на источник пакета, среда читается следующим образом в пакете PyYapf.py:

self.popen_env = os.environ.copy()

При печати содержимого self.popen_env тогда LANG и LC_ALL, похоже, не установлены или не равны значению C.UTF-8.

Где возвышенный текст получаетenvs от?

1 Ответ

4 голосов
/ 11 мая 2019

Быстрый обходной путь:

$ cd ~/.config/sublime-text-3/Packages
$ mkdir -p Default
$ echo 'import os; os.environ["LC_ALL"] = os.environ["LANG"] = "C.UTF-8"' > Default/echo.py

Ну, ради бога, НЕ ПЫТАЙТЕСЬ на этот мерзкий взлом. Пожалуйста, уделите некоторое время правильной настройке локали, иначе в будущем вы, скорее всего, столкнетесь с другими проблемами локали.

Для Linux Mint и других вариантов Debian просто запустите $ sudo dpkg-reconfigure locales и отметьте en_US.UTF-8 (или любую другую локаль, которую вы предпочитаете) в списке. Следуйте этим двум сообщениям для получения более подробной информации об ошибках локали.

...