每当我打开一个脚本(Python或R)时,我希望Sublime自动将当前工作目录更改为该文件的路径。这可能吗?
我添加了设置"working_dir": "$file_path",
到Sublime的首选项,但它没有帮助。
好的,我解决了这个问题。以下是我所做的:
- Install Sublime Text 3 package
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""
对R
或其他构建资源做同样的事情,如果你想让Sublime Text 3根据活动脚本的路径自动更改当前工作目录
您可以使用View菜单中的Show console命令打开python控制台,然后键入
import os
os.chdir('/my/directory')
它改变了Sublime Text进程的工作目录,以及它生成的任何进程。
另一个解决方案:您知道控制台以Alt+"打开。当我使用组合Alt+1时,它直接选择当前文件路径。每次打开sublime text的时候,你都要这样做
我有同样的问题,加上如果我想导入一个模块,它总是返回模块未找到。
为了解决这个问题:我改变了python的第一行。将构建文件升华为
{
"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}"",
}
]
}
非常好奇,我想知道为什么会发生这种情况,所以在对我的操作系统进行了更多的调查之后,运行:
import os
for k, v in os.environ.items():
print(k, v)
print(os.getcwd())
返回我的环境变量及其值的字典,包括在构建结果PWD
和OLDPWD
中回答我的问题的2:
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目录。
现在,在改变了蟒蛇之后。如上所述的构建文件更改了此构建行为已被修复- &我希望这对你也有帮助!