我已经安装了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
值。
崇高的文本从哪里获得环境?
快速解决方法:
$ 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
(或任何其他您喜欢的语言环境(。请关注这两篇文章,了解有关区域设置错误的更多详细信息。