我对sublime3全新,但我无法找到对我的问题有帮助的东西...
我有不同的virtualenvs(使用virtualenwrapper制作),我希望能够指定每个项目使用哪个venv
由于我使用SublimeREPL插件进行自定义构建,我如何指定构建项目的python安装?
例如,当我在项目A上工作时,我想用venvA的python运行脚本,当我在项目B上工作时,我想用venvB运行(使用不同的构建脚本)
抱歉,我可怕的英语......答案 0 :(得分:49)
希望这是你想象的路线。我试图简化我的解决方案并删除一些你可能不需要的东西。
这种方法的优点是:
如果您有任何问题,或者我完全错过了您想要做的事情,请告诉我。
打开我们的项目文件进行编辑:
Project -> Edit Project
在项目的设置中添加一个新键,指向所需的virtualenv:
"settings": {
"python_interpreter": "/home/user/.virtualenvs/example/bin/python"
}
Anaconda等插件也会使用"python_interpreter"
项目设置键。
浏览到Sublime Text的Packages
目录:
Preferences -> Browse Packages...
为我们的插件创建一个新的python文件,例如:project_venv_repls.py
将以下python代码复制到这个新文件中:
import sublime_plugin
class ProjectVenvReplCommand(sublime_plugin.TextCommand):
"""
Starts a SublimeREPL, attempting to use project's specified
python interpreter.
"""
def run(self, edit, open_file='$file'):
"""Called on project_venv_repl command"""
cmd_list = [self.get_project_interpreter(), '-i', '-u']
if open_file:
cmd_list.append(open_file)
self.repl_open(cmd_list=cmd_list)
def get_project_interpreter(self):
"""Return the project's specified python interpreter, if any"""
settings = self.view.settings()
return settings.get('python_interpreter', '/usr/bin/python')
def repl_open(self, cmd_list):
"""Open a SublimeREPL using provided commands"""
self.view.window().run_command(
'repl_open', {
'encoding': 'utf8',
'type': 'subprocess',
'cmd': cmd_list,
'cwd': '$file_path',
'syntax': 'Packages/Python/Python.tmLanguage'
}
)
打开用户密钥绑定文件:
Preferences -> Key Bindings - User
添加一些键绑定以使用该插件。一些例子:
// Runs currently open file in repl
{
"keys": ["f5"],
"command": "project_venv_repl"
},
// Runs repl without any file
{
"keys": ["f6"],
"command": "project_venv_repl",
"args": {
"open_file": null
}
},
// Runs a specific file in repl, change main.py to desired file
{
"keys": ["f7"],
"command": "project_venv_repl",
"args": {
"open_file": "/home/user/example/main.py"
}
}
答案 1 :(得分:19)
有一个名为Virtualenv
的sublime text3包,允许您使用virtualenv中的Python进行构建。
它支持virtualenv中的任何Python版本,对我来说效果很好(MacOS)。
要安装它,我们只需命令 + Shift + P 来调出pacakge控件(如果你没有安装它,请安装它) (还有),然后输入install
。接下来输入virtualenv
,当您看到它时,单击 return 进行安装。
安装后,选择Tools
- > Build System
- > Python + Virtualenv
。然后你可以使用 command + B 来执行你的Python项目。
点击Here查看更多信息。
答案 2 :(得分:4)
您正在寻找自定义构建系统。
在菜单栏中,点击Tools -> Build Systems -> New Build System...
填写它提供的模板,并将其保存在以.sublime-build
结尾的任何文件名下保存到User
文件夹。
以下是制作自定义构建系统的文档:
http://docs.sublimetext.info/en/latest/reference/build_systems.html
我建议为python脚本创建一个自定义构建系统,然后为您想要的每个虚拟环境添加变体。 (见变体http://docs.sublimetext.info/en/latest/reference/build_systems.html#variants)
您构建一个构建系统,可以从
切换它们Tools -> Build Systems
(如果没有自动检测到)并使用命令调色板(默认ctrl + shift p)在变体之间切换。
唯一的“gotcha”是"cmd"
参数来描述要运行的命令。默认情况下,它会将一个字符串数组作为命令运行,但您可以使用"shell_cmd"
来代替使用通过命令行运行它的字符串。
答案 3 :(得分:2)
我有另一种选择。只需创建一个新的“构建系统”,就像在虚拟环境中一样运行。这里我们称之为'my_python'。目的是使用此构建系统直接运行我的脚本而不离开崇高。你需要:
preferences->Browse Packages
。这将打开一个文件夹,其中包含设置文件。转到目录User
并创建一个名为my_python.sublime-build
的新文件(由构建系统名称后跟.sublime_build
组成。)执行此操作后,转到Tools -> Build System
,您将看到新选项my_python
。将以下JSON设置添加到该文件。
{
"shell_cmd": "/Users/Ted/bsd/vector/.v_venv/bin/python -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
在shell_cmd
内,将/Users/Ted/bsd/vector/.v_venv/bin/python
更改为您的python虚拟环境的路径。
然后只需使用快捷键来构建脚本。
如果要更改虚拟环境,只需将其路径复制到设置文件即可。也许这种方法似乎包含了大量工作,但它运作良好且方便。
答案 4 :(得分:0)
我是 Python、pipenv,尤其是 Sublime Text 3 的超级新手。找不到让我开始在 Windows 10 上使用 pipenv 虚拟环境和 sublime 的简单解决方案。
这对于没有太多系统经验的人来说非常有效。
我的设置:
Windows 10 Pro
Python 3.9
Sublime Text 3
Dedicated directory for Python virtual environment 'C:Users\username\VirtualEnvs`
pipenv install BestPythonPackage
pipenv shell
pipenv --venv
Project > Save Project As > "New Project Name"
"New Project Name".sublime-project
{
"folders":
[
{
"path": "C:\\Users\\username\\.virtualenvs\\PythonEnvs-uKL8m4_g",
},
],
"build_systems": [
{
"name": "PYTHON_PIPENV",
"cmd": ["python", "$file"],
}
],
}
观察专用文件夹的 sublime 文件夹名称已更改为虚拟环境的名称。
从文件夹创建一个“hello.py”程序。
使用列表中的 Tools > Build System > "PYTHON_PIPENV"
构建系统构建程序。
当然,这里需要注意的是,您需要为任何新的虚拟环境执行此操作。提供的一些其他解决方案将动态更新。那些是/现在在我的头上。这是一个简单的解决方案。
'folders' 部分告诉 sublime 要查看的目录 'build_systems' 为新配置命名,并告诉 sublime 在你打开的任何文件上运行 'python'。