我已经安装了 yapfPyYapf 包( https://github.com/jason-kane/PyYapf ),用于 Python 代码格式的 sublime 文本。
此外,对于我的 Python 项目,我使用的是 pipenv

在 sublime 中执行格式化命令时,我收到以下错误

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 的内容时,LANGLC_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(或任何其他您喜欢的语言环境)。关注 these 两个 posts 以获取有关区域设置错误的更多详细信息。

关于python - Sublime Text 环境变量不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55822044/

10-12 17:52
查看更多