如何更改 Sublime Text 3 中的当前工作目录?
How can I change current working directory in Sublime Text 3?
每当我打开脚本(Python 或 R)时,我希望 Sublime 自动将当前工作目录更改为该文件的路径。可能吗?
我将设置 "working_dir": "$file_path",
添加到 Sublime 首选项,但它没有帮助。
好的,我解决了问题。这是我所做的:
- 安装 Sublime Text 3 包
PackageResourceViewer
- 打开命令面板,搜索
PackageResourceViewer: Open Resource
- 浏览到
Python
资源然后打开 Python.sublime-build
- 删除默认行
"shell_cmd": "python -u \"$file\"",
添加以下两行:
"cmd": ["python", "-u", "$file"],
"working_dir": "$file_path",
或者,您可以将以上两行替换为:
"shell_cmd": "cd $file_path; python -u \"$file\""
如果您希望 Sublime Text 3 根据活动脚本的路径自动更改当前工作目录,请对 R
或其他构建资源执行相同的操作。
您可以使用“查看”菜单中的“显示控制台”命令打开 python 控制台,然后键入
import os
os.chdir('/my/directory')
它改变了 Sublime Text 进程的工作目录以及它产生的任何进程。
另一种解决方案:您知道控制台以 Alt+" 打开。当我使用组合 Alt+1是直接选择当前文件路径,每次打开sublime text都要这样操作
我遇到了同样的问题,而且如果我想导入一个模块,它总是 return 找不到模块。
要解决此问题: 我将 python.sublime-build 文件的第一行更改为下面的内容
{
"shell_cmd": "cd $file_path; python -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
{
"env": "PYTHONIOENCODING": "utf-8",
],
"variants":
}
{
"name": "Syntax Check",
"shell_cmd": "python -m py_compile \"${file}\"",
}
]
}
出于好奇,我想知道为什么会发生这种情况,所以在对我的os、运行进行了更多调查之后:
import os
for k, v in os.environ.items():
print(k, v)
print(os.getcwd())
其中 return 是我的环境变量及其值的字典,包括 2 个在构建结果 PWD
和 OLDPWD
:
中回答了我的问题
PWD /Users/<myname>/code
OLDPWD /Users/<myname>/code/code_py
...
[Finished 0.0ms]
...
[shell_cmd: cd /Users/<myname>/code/code_py; python -u "/Users/<myname>/code/code_py/YT-tutorials.py"]
...
啊哈!
因为我之前添加了 cd $HOME/code
我的 ~/.bash_profile,所以每次我用 python 在 sublime 中构建 (command+B) 时,我的 shell 配置文件都会 在幕后更改目录 并将我移至我的 ~/code 目录。
现在,在如上所述更改 python.sublime-build 文件后,此构建行为已得到修复——我希望这对您也有帮助!
每当我打开脚本(Python 或 R)时,我希望 Sublime 自动将当前工作目录更改为该文件的路径。可能吗?
我将设置 "working_dir": "$file_path",
添加到 Sublime 首选项,但它没有帮助。
好的,我解决了问题。这是我所做的:
- 安装 Sublime Text 3 包
PackageResourceViewer
- 打开命令面板,搜索
PackageResourceViewer: Open Resource
- 浏览到
Python
资源然后打开Python.sublime-build
- 删除默认行
"shell_cmd": "python -u \"$file\"",
添加以下两行:
"cmd": ["python", "-u", "$file"],
"working_dir": "$file_path",
或者,您可以将以上两行替换为:
"shell_cmd": "cd $file_path; python -u \"$file\""
如果您希望 Sublime Text 3 根据活动脚本的路径自动更改当前工作目录,请对 R
或其他构建资源执行相同的操作。
您可以使用“查看”菜单中的“显示控制台”命令打开 python 控制台,然后键入
import os
os.chdir('/my/directory')
它改变了 Sublime Text 进程的工作目录以及它产生的任何进程。
另一种解决方案:您知道控制台以 Alt+" 打开。当我使用组合 Alt+1是直接选择当前文件路径,每次打开sublime text都要这样操作
我遇到了同样的问题,而且如果我想导入一个模块,它总是 return 找不到模块。
要解决此问题: 我将 python.sublime-build 文件的第一行更改为下面的内容
{
"shell_cmd": "cd $file_path; python -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
{
"env": "PYTHONIOENCODING": "utf-8",
],
"variants":
}
{
"name": "Syntax Check",
"shell_cmd": "python -m py_compile \"${file}\"",
}
]
}
出于好奇,我想知道为什么会发生这种情况,所以在对我的os、运行进行了更多调查之后:
import os
for k, v in os.environ.items():
print(k, v)
print(os.getcwd())
其中 return 是我的环境变量及其值的字典,包括 2 个在构建结果 PWD
和 OLDPWD
:
PWD /Users/<myname>/code
OLDPWD /Users/<myname>/code/code_py
...
[Finished 0.0ms]
...
[shell_cmd: cd /Users/<myname>/code/code_py; python -u "/Users/<myname>/code/code_py/YT-tutorials.py"]
...
啊哈!
因为我之前添加了 cd $HOME/code
我的 ~/.bash_profile,所以每次我用 python 在 sublime 中构建 (command+B) 时,我的 shell 配置文件都会 在幕后更改目录 并将我移至我的 ~/code 目录。
现在,在如上所述更改 python.sublime-build 文件后,此构建行为已得到修复——我希望这对您也有帮助!