Для начала, вот моя среда разработки:
- 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, а не просто запускать код в консоли .