繁体   English   中英

在sublime文本3中定义与sublime-project相关的virtualenv和linter可执行文件

[英]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软件包会自动检测最近的venvlinter可执行文件。

类似于默认的sublime-project文件,它将为所有常用路径获取相对值。

我试着摆弄,但没有设法得到一些东西,但硬编码的路径起作用。

我觉得这是一个普遍的问题,所以我认为必须有一个简单的解决方案。

我设法自己解决了问题,以防万一有人感兴趣,这就是我最终要做的事情:

首先,显然我不是唯一一个遇到此问题的人( 这里这里这里这里似乎都存在类似的问题),但是我花了很多时间才终于找到一个对我有用的简单答案。

重申一下,我的问题是为我拥有的每个小项目找到一种绕开到虚拟环境和linter可执行文件的硬连线的简便方法,而无需进行任何全局安装。

  • 在虚拟环境中,只需使用程序包控制在项目根文件夹中找到所需的venv ,就可以避免在sublime-project文件中进行任何配置(Ctrl + Shift + P-> VirtualEnv:Activate)。 该目录会自动添加到sublime-project文件中,并且通过选择python + virtualenv构建系统会在以后的构建中自动调用,而无需考虑venv是否已真正激活。 显然,必须安装Virtualenv软件包才能起作用。
  • 此外,为了不必一遍又一遍地重新定义linter可执行文件, SublimeLinter文档指出,可以使用${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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM