[英]Define virtualenv and linter executables relative to sublime-project in sublime text 3
我试图弄清楚使用sublime text 3和python虚拟环境的最佳设置是什么。
我使用的是Virtualenv软件包,我的典型项目结构包括一个根目录,该目录包含一个始终称为venv的虚拟环境,位于我项目的根文件夹中。 为了访问virtualenv,我必须在sublime-project文件中的每个项目基础上指定venv的位置,并设置virtualenv条目。 我还必须指定我正在使用的所有linter的绝对路径。
没什么大不了的,但是每次我在一个新的小项目中玩耍时,设置这些条目肯定很繁琐。
我希望会有一个平滑的解决方案,其中Virtualenv软件包会自动检测最近的venv和linter可执行文件。
类似于默认的sublime-project文件,它将为所有常用路径获取相对值。
我试着摆弄,但没有设法得到一些东西,但硬编码的路径起作用。
我觉得这是一个普遍的问题,所以我认为必须有一个简单的解决方案。
我设法自己解决了问题,以防万一有人感兴趣,这就是我最终要做的事情:
首先,显然我不是唯一一个遇到此问题的人( 这里 , 这里 , 这里和这里似乎都存在类似的问题),但是我花了很多时间才终于找到一个对我有用的简单答案。
重申一下,我的问题是为我拥有的每个小项目找到一种绕开到虚拟环境和linter可执行文件的硬连线的简便方法,而无需进行任何全局安装。
${variable_name}
语法调用SublimeTexts expand_variables API来访问预定义变量以及所有环境变量。 但是,文档未说明 -显然阻止了许多其他人实际解决其问题的原因-变量扩展在SublimeLinter.paths属性中不起作用 ,因为该线程中的 kaste指出了这一点 。 因此,变量扩展确实可以工作,它只需要直接针对linter可执行文件即可。 就我而言,我使用的是pythons pyflake和pycodestyle,而SublimeLinter用户设置现在看起来像这样 // SublimeLinter Settings - User
{
***
// Provide extra paths to be searched when locating system executables.
"paths": {
"linux": [],
"osx": [],
"windows": [],
},
"linters": {
"pycodestyle": {
"executable": "${project_path}\\venv\\Scripts\\pycodestyle.exe",
},
"pyflakes": {
"executable": "${project_path}\\venv\\Scripts\\pyflakes.exe",
}
},
}
我在其中访问project_path变量以从那里创建可执行文件的完整路径。 这仅要求我遵循一致的约定,即命名虚拟环境venv ,并将其与sublime-project文件放置在同一目录中,并将可能直接使用的所有Lint安装到项目虚拟环境中。
此设置的优点之一是,它同时适用于python2和python3,并且可以根据venv所使用的版本正确编码代码,而无需进行任何其他设置。
许多文本需要进行这样的微调,但是也许其他一些崇高的人可能会觉得有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.