【问题标题】:Sublime Text environment variables not presentSublime Text 环境变量不存在
【发布时间】:2019-09-13 06:40:32
【问题描述】:

我已经安装了 yapfPyYapf 包 (https://github.com/jason-kane/PyYapf) 用于 Python 代码格式化的崇高文本。 此外,对于我的 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

但是,sublime text 仍然会给出原始错误。查看包的源代码,环境在PyYapf.py 包中是这样读取的:

self.popen_env = os.environ.copy()

当打印 self.popen_env 的内容时,LANGLC_ALL 似乎没有设置为 C.UTF-8 值。

崇高文本从哪里获取环境?

【问题讨论】:

  • 您使用的是 Linux 还是 MacOS?
  • 我在 Linux Mnt 19 上
  • 据我所知,os.environ() 应该直接为您提供正在运行的进程的环境。我建议重新启动以确保扩展坞/启动器继承新环境,但您已经这样做了。如果您从终端启动 Sublime(在验证上述变量之后),您会得到不同的结果吗?
  • 我总是从终端运行 sublime,所以它应该给它与我在终端中使用printenv 收到的相同的变量,或者不是?
  • 我会这么认为。过去我在使用这些变量时遇到过类似的问题,将它们设置在终端中并从那里启动可以工作,而启动器图标却没有。

标签: python plugins environment-variables sublimetext3 pipenv


【解决方案1】:

快速解决方法:

$ 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 了解有关语言环境错误的更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2016-04-24
    相关资源
    最近更新 更多