Как я могу использовать venv с SublimeREPL в Sublime Text 3? - PullRequest
0 голосов
/ 17 мая 2018

Для начала, вот моя среда разработки:

  • Windows 7 (хотя у меня та же проблема на другом компьютере с Windows 10)
  • Python 3,6
  • Git Bash
  • Sublime Text 3 (версия 3.1.1, сборка 3176)
  • SublimeREPL

В Git Bash я создал новую виртуальную среду:

$ mkdir ~/.venv
$ cd ~/.venv
$ python -m venv test-env

Чтобы активировать эту виртуальную среду, я использую:

$ source ~/.venv/test-env/Scripts/activate

ПРИМЕЧАНИЕ: Мне пришлось изменить скрипт активации (NOT activ.bat), чтобы заставить venv правильно активироваться. В частности, я изменил строку 40, которая выглядела примерно так:

VIRTUAL_ENV="C:\Users\my_user_name\.venv\test-env"

до

VIRTUAL_ENV="/c/Users/my_user_name/.venv/test-env"

Теперь, когда я нахожусь в виртуальной среде test-env (о чем свидетельствует текст "(test-env)" в Git Bash), я могу делать обычные вещи, такие как

(test-env)
$ pip install numpy

У меня также есть пакет SublimeREPL, установленный в Sublime Text 3. Я устанавливаю новую систему сборки (SublimeREPL-python.sublime-build), которая выглядит следующим образом:

{
    "target": "run_existing_window_command", 
    "id": "repl_python_run",
    "file": "config/Python/Main.sublime-menu"
}

Теперь предположим, что у меня есть скрипт

# test.py
import numpy as np


print('numpy was imported without error')

Я могу набрать Ctrl + Shift + B, затем начать вводить 'repl', который автоматически выбирает сборку SublimeREPL-python, а затем нажать Enter. SublimeREPL появляется, но генерирует ошибку:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    import numpy as numpy
ModuleNotFoundError: No module named 'numpy'
>>> 

SublimeREPL был вызван без использования моей виртуальной среды, из-за чего он выдает ошибку, потому что numpy не был установлен в моей глобальной среде python.

Как запустить скрипт Python из Sublime Text 3 с помощью SublimeREPL и получить доступ к моей виртуальной среде, созданной с помощью venv?

FWIW, я уже пытался создать Sublime Project для этого кода и добавить следующее в файл .sublime-project:

"build_systems":
[
    {
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
        "name": "test-env",
        "selector": "source.python",
        "shell_cmd": "\"C:\\Users\\my_user_name\\.venv\\test-env\\Scripts\\python\" -u \"$file\""
    }
]

Это позволило мне набрать Ctrl + Shift + B, затем «test-env», затем Enter (для сборки с только что созданной системой сборки test-env), которая работала как ожидалось и работала без ошибок. Тем не менее, он не использует SublimeREPL, который я хотел бы, чтобы я мог отлаживать свой код (который сложнее, чем простой тестовый сценарий, который я опубликовал выше!) И исследовать переменные в REPL, а не просто запускать код в консоли .

...