python-3.x - Sublime 3 路径变量
问题描述
我正在尝试在 Windows 10 pc 上为 sublime text 3 设置 python 3 构建路径。系统说找不到指定的文件,但是我已经添加了路径并设置了python3的构建系统。我尝试构建时收到的错误消息如下..
[WinError 2] The system cannot find the file specified
[cmd: ['python3', '-i', '-u', 'C:\\Users\\strinkjr\\Desktop\\Python Stuff\\errorSearch.py']]
[dir: C:\Users\strinkjr\Desktop\Python Stuff]
[path: C:\Users\strinkjr\Desktop\Python Stuff\]
[Finished]
我的构建环境文件如下:
{
"cmd": ["python3", "-i", "-u", "$file"],
"file_regex": "^[ ]File \"C:/Users/strinkjr/AppData/Local/Programs/Python/Python36/python.exe\", line ([0-9]*)",
"selector": "source.python"
}
我不确定我是否错误地设置了路径,或者我是否错误地设置了构建环境。(也许两者都有)
解决方案
您遇到的几个总体问题阻碍了您的发展。
首先是你没有PATH
正确设置。就命令执行而言,构建输出向您显示了PATH
当前定义的内容:
[path: C:\Users\strinkjr\Desktop\Python Stuff\]
这PATH
是 Windows 将在其中查找您尝试执行的程序的位置列表,因此除非python3.exe
此目录中有一个,否则您不小心将 设置为PATH
您正在运行的文件的位置,而不是解释器那是用来运行它们的。
其次,一旦执行完脚本,您将传递-i
给 Python 解释器以使其进入交互模式。Sublime 不允许您与在 a 中执行的程序进行交互sublime-build
,因此如果您在程序完成执行并进入交互模式后执行此操作,它将有效地挂起,等待您提供您无法提供的输入提供。
您的构建系统还包含以下file_regex
条目:
"file_regex": "^[ ]File \"C:/Users/strinkjr/AppData/Local/Programs/Python/Python36/python.exe\", line ([0-9]*)",
在sublime-build
文件中,file_regex
用于检测程序输出中的哪些行是错误的,以便 Sublime 可以允许您在错误之间导航,或者如果您打开了该选项,则可以使用内联错误标记它们。
虽然这不会阻止你的程序运行,但它会阻止 Sublime 识别错误,因为文件名永远不会匹配。
我会尝试sublime-build
类似以下的文件,看看它是否更适合您:
{
"shell_cmd": "python3 -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {
"PYTHONIOENCODING": "utf-8",
"PATH": "$PATH;C:/Users/strinkjr/AppData/Local/Programs/Python/Python36/"
},
}
这删除了-i
阻止解释器进行交互以停止任何问题的参数,并使用shell_cmd
而不是cmd
提供命令,这会稍微改变格式。
这里file_regex
是一个匹配常规 python 错误的错误,它类似于您已经提供的错误,但没有对 Python 可执行文件的引用。
这里最大的补充是几个环境变量。第一个确保 Python 知道它应该utf-8
用来生成输出,因为这是 Sublime 控制台期望它使用的。如果您尝试显示非 ascii 输出,这会阻止您遇到潜在的错误。
这也应用了一个包含现有路径的新 PATH,并且还添加了一个看起来可能是基于您已经使用的文件的 Python 安装位置的路径。
如果位置不正确,该部分可能需要调整;或者,您可以删除PATH
部分并酌情sublime-build
修改您的环境变量。PATH
请注意,如果这样做,您可能需要重新启动 Sublime 才能看到更改。
推荐阅读
- python-3.x - 如何在 Python 中递归比较两个字符串?
- sql - 在 SQL 查询中重写多个 NOT EXISTS 子句的可能方法?
- azure - Azure CDN 会话问题后端应用程序网关
- javascript - Mongo collection.find().then() 不是函数
- amazon-cloudformation - fargate 在私有子网中的 docker pull 上失败
- ios - 呼叫连接失败:连接错误 (503)
- android - 什么是 AndroidX.Test 框架,它如何影响我的单元/robolectric/espresso 测试?
- scrapy - Scrapy for mac ModuleNotFoundError: No module named '${project_name}'
- javascript - 编译顶点着色器时出错!错误:0:3:'attrubte':语法错误
- python - 为新的 Django 项目创建另一个 virtualenv