Sublime Text 配置 Python 环境的问题及解决方案
作者:SY-Liu 发布时间:2022-04-26 15:14:41
本文给出了本人在使用 Sublime Text 配置 Python 环境的记录。主要为了解决中文乱码的问题以及 Sublime Text 默认的输出窗口无法进行输入的问题。
注意:本文默认在 Windows 系统下,Sublime Text 版本为 4(及以上)。对于 Mac 和 Linux 系统几乎没有什么不同,此外,本文也同样适用于 Sublime Text 3。
总的来说,Python 环境的配置十分简单,也不需要下载安装一些插件。有一些解决方案仅仅为了实现 Python 程序的输入问题,就大费周章。本文给出个人的简单解决办法。
Python 的安装
想使用 Python,首先得安装 Python。
我们去 Python 官网进行下载,点击 Downloads,一般来说选择最新版本进行下载即可。
安装的详细过程在此不讨论了。需要注意的是,要确保Python的安装路径已经添加到系统的环境变量 Path
中,可以通过 Win+R
打开 cmd
,输入 python
来检验是不是安装成功了。如果成功,则会打印一些如 Python 版本号之类的信息,并进入 >>>
的交互式环境。
Sublime Text 构建系统
接下来是重点,关于 Sublime Text 构建系统的详细内容,请参见本人的另一篇文章:
Sublime Text 构建系统 - 学习整理
打开 Sublime Text,按照 Tools | Build System | New Build System...
新建一个 .sublime-build
文件。这个文件可以任意起一个名字,如 Python.sublime-build
,我们将使用这个文件来自定义构建系统。一般把这个文件保存在用户目录的 Packages 文件夹或其子目录下(即 path\to\your\username\AppData\Roaming\Sublime Text\Packages
或其子目录下)。
我们完全不需要自己从头写一个构建系统,只需要先看一看 Sublime Text 自带的 Python 的构建系统是怎么写的,然后稍作改动即可。
在 Sublime Text 的安装路径下,我们找到 Packages 文件夹,然后在里面寻找到 Python.sublime-package
,这就是 Sublime Text 自带的 Python 包。
这个 .sublime-package
文件实际上就是一个 zip 压缩包,我们把它复制到其他位置并重命名为 Python.zip
,打开压缩包我们会看到其中的一个文件 Python.sublime-build
,这就是 Python 的构建系统文件了。 Python.sublime-build
文件的内容如下:
Python.sublime-build:
{
"cmd": ["python3", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"},
"windows": {
"cmd": ["py", "-u", "$file"],
},
"variants":
[
{
"name": "Syntax Check",
"cmd": ["python3", "-m", "py_compile", "$file"],
"windows": {
"cmd": ["py", "-m", "py_compile", "$file"],
}
}
]
}
我们从主 "cmd"
或是 "windows"
选项内的 "cmd"
都可以知道,Sublime Text 内部的 exec
命令将调用 python.exe
(相当于在命令行输入 python
),参数有两个:一个是 -u
,表示强制不缓冲 stdout 和 stderr 流;另一个是 $file
,表示当前的文件路径。输出结果将显示在 Sublime Text 内部的输出窗口中。另外,
"env": {"PYTHONIOENCODING": "utf-8"}
将解决某些中文乱码问题。
考虑一下现有的 Python 构建系统的缺陷,其实,它还真没有太多的缺陷,对于一般的使用足够了——特别是当你的 Python 程序不需要从键盘输入时。
为了解决对于键盘输入的需求,我们可以用 cmd 窗口来运行 Python 程序,这样不就能处理输入了吗。为此,我们只需要把 "cmd"
换掉,用以下的代码取而代之:
"shell_cmd": "start cmd /c \"python -u \"${file_name}\" & pause\""
它的意思就是启动 cmd
,然后执行 python
的命令,直到程序运行完毕,最后暂停一下,通过按任意键退出,cmd 窗口也随之关闭。/c
就是表示执行由后面字符串指定的命令,然后关闭 cmd 窗口。
下面给出 Python 自定义的构建系统的完整代码:
{
"cmd": ["python", "-u", "${file_name}"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"working_dir": "${file_path}",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"},
"variants":
[
{
"name": "Python (cmd)",
"shell_cmd": "start cmd /c \"python -u \"${file_name}\" & pause\""
}
]
}
注意,我们将写好的 .sublime-build
文件保存在用户目录的 Packages 文件夹或其子目录下(即 path\to\your\username\AppData\Roaming\Sublime Text\Packages
或其子目录下)。直接修改 Sublime Text 安装目录的 Packages 目录下的文件是徒劳的,因为它们是只读文件,每次启动 Sublime Text 都会重置这些文件。
不用担心自己写的 Python.sublime-build
文件与 Sublime Text 自带的 Python.sublime-build
文件冲突。这两个文件的配置都会在按快捷键 Ctrl+Shift+B
选择构建系统时显示出来,你可能会看到两个 Python 的配置,第一个是 Sublime Text 自带的,第二个就是你自己写的——如果你将你自定义的 .sublime-build
文件命名为 Python.sublime-build
了的话。如果不然,那么你的配置名称就是你 .sublime-build
文件的文件名(不加后缀)。
来源:https://blog.csdn.net/qq_45890382/article/details/122334238


猜你喜欢
- --程序员们在编写一个雇员报表,他们需要得到每个雇员当前及历史工资状态的信息, --以便生成报表。报表需要显示每个人的晋升日期和工资数目。
- np.nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)的函数。一般来说,通过help(np.nonzero
- 描述int函数可以将一个指定进制的数字型字符串或者十进制数字转化为整形。语法int(object, base)名称说明备注object一个数
- 需求来源好友 A:橡皮擦,可否提供网页,上传带人像的图片,然后可以直接抠图,最好直接生成 PNG 图片下载。 橡皮擦:每天需要调用多少次?
- 一般来说,内置的slice()函数会创建一个切片对象,可以用在任何允许进行切片操作的地方。下面是slice的简介:# slice 两种用法c
- 关于窗口函数的基础,请看文章SQL窗口函数取值窗口函数可以用于返回窗口内指定位置的数据行。常见的取值窗口函数如下:LAG函数可以返回窗口内当
- 昨天在QQ群里讨论一个SQL优化的问题,语句大致如下:select A,min(B) from table group by A;--A,B
- 本文主要介绍的是关于微信小程序利用co处理异步流程的方法教程,分享出来供大家参考学习,需要的朋友们下面来看看详细的介绍:coco是一个基于E
- 人类学是关于人的研究;社会人类学(social anthropology)是研究人类社会的学科。社会人类学还可以理解成“文化翻译”(the
- 最近帮人做了个贪吃蛇的游戏(交作业用),很简单,界面如下:开始界面:游戏中界面:是不是很简单、朴素。(欢迎大家访问GitHub)游戏是基于P
- Memento备忘录模式 备忘录模式一个最好想象的例子:undo! 它对对象的一个状态进行了'快照', 在你需要的时候恢复原
- 相信很多与页面打过交道的同学都对 Yahoo 的 Best Practices for Speeding Up Your Web Site
- 本文实例讲述了python数据结构之图深度优先和广度优先用法。分享给大家供大家参考。具体如下:首先有一个概念:回溯回溯法(探索与回溯法)是一
- 发现问题一个作业报错,报错信息如下,从错误信息根本看不出为什么出错,手工运行作业又成功了。一时不清楚什么原因导致作业出错。MessageEx
- 对于opencv 它提供了许多已经练习好的模型可供使用,我们需要通过他们来进行人脸识别参考了网上许多资料 假设你已经配好了开发环境
- setTimeoutsetTimeout 语法例子用 setTimeout 来执行 function不断重复执行的 setTimeout设定
- 01直接生成这类方法是利用基本程序软件包numpy的随机数产生方法来生成各类用于聚类算法数据集合,也是自行制作轮子的生成方法。一、基础类型1
- 文章是从stackoverflow翻译过来的,原文地址:Relative imports for the billionth time本文要
- 我的数据库和报表服务的版本如下:数据库:SQL Server 2008 R2报表服务:SQL Server 2008 R2 Reportin
- 之前在懒懒分会上分享的一点关于border画小图的内容, 完整的ppt在这里.原理css盒模型一个盒子包括: margin+border+p