簡體   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