Возвышенный текст3 и virtualenvs
Я абсолютно новый с sublime3, но я не мог найти ничего полезного для моей проблемы...
У меня есть differents virtualenvs (сделанный с virtualenwrapper), и я хотел бы иметь возможность указать, какой venv использовать с каждым проектом
Поскольку я использую плагин SublimeREPL для создания пользовательских сборок, как я могу указать, какая установка python для создания моего проекта с?
например, когда я работаю над проектом A, я хочу запускать скрипты с помощью python venvA, а когда я работаю над проектом B, я хочу запускать вещи с помощью venvB (используя другую конструкцию script)
извините мой страшный английский...
Ответы
Ответ 1
Надеемся, что это по строкам, которые вы себе представляете. Я попытался упростить свое решение и удалить некоторые вещи, которые вам, вероятно, не нужны.
Преимущества этого метода заключаются в следующем:
- Нажмите одну кнопку, чтобы запустить SublimeREPL с правильным интерпретатором и запустить файл в нем, если это необходимо.
- После установки интерпретатора при переключении между проектами не требуется никаких изменений или дополнительных шагов.
- Может быть легко расширен, чтобы автоматически выбирать конкретные переменные среды проекта, желаемые рабочие каталоги, запускать тесты, открывать оболочку Django и т.д.
Сообщите мне, если у вас есть какие-либо вопросы, или если я полностью пропустил отметку о том, что вы хотите сделать.
Установить интерпретатор проекта Python
-
Откройте файл проекта для редактирования:
Project -> Edit Project
-
Добавьте новый ключ к настройкам проекта, который указывает на нужный virtualenv:
"settings": {
"python_interpreter": "/home/user/.virtualenvs/example/bin/python"
}
A "python_interpreter"
ключ настроек проекта также используется плагинами, такими как Anaconda.
Создайте плагин для захвата этого параметра и запустите SublimeREPL
-
Перейдите в каталог Sublime Text Packages
:
Preferences -> Browse Packages...
-
Создайте новый файл python для нашего плагина, например: project_venv_repls.py
-
Скопируйте следующий код python в этот новый файл:
import sublime_plugin
class ProjectVenvReplCommand(sublime_plugin.TextCommand):
"""
Starts a SublimeREPL, attempting to use project specified
python interpreter.
"""
def run(self, edit, open_file='$file'):
"""Called on project_venv_repl command"""
cmd_list = [self.get_project_interpreter(), '-i', '-u']
if open_file:
cmd_list.append(open_file)
self.repl_open(cmd_list=cmd_list)
def get_project_interpreter(self):
"""Return the project specified python interpreter, if any"""
settings = self.view.settings()
return settings.get('python_interpreter', '/usr/bin/python')
def repl_open(self, cmd_list):
"""Open a SublimeREPL using provided commands"""
self.view.window().run_command(
'repl_open', {
'encoding': 'utf8',
'type': 'subprocess',
'cmd': cmd_list,
'cwd': '$file_path',
'syntax': 'Packages/Python/Python.tmLanguage'
}
)
Установить горячие клавиши
-
Откройте файл keybind для пользователя:
Preferences -> Key Bindings - User
-
Добавьте несколько ключевых слов, чтобы использовать плагин. Некоторые примеры:
// Runs currently open file in repl
{
"keys": ["f5"],
"command": "project_venv_repl"
},
// Runs repl without any file
{
"keys": ["f6"],
"command": "project_venv_repl",
"args": {
"open_file": null
}
},
// Runs a specific file in repl, change main.py to desired file
{
"keys": ["f7"],
"command": "project_venv_repl",
"args": {
"open_file": "/home/user/example/main.py"
}
}
Ответ 2
Существует возвышенный пакет text3 с именем Virtualenv
, позволяющий создавать с использованием Python из вашего virtualenv.
Он поддерживает любые версии Python в вашем virtualenv и отлично работает для меня (MacOS).
Чтобы установить его, мы просто command + Shift + P, чтобы вызвать элемент управления pacakge (установите его, если он еще не установлен), затем введите install
. Следующий тип Virtualenv
, когда вы увидите его, нажмите return, чтобы установить его.
После его установки выберите Tools
→ Build System
→ Python + Virtualenv
. Затем вы можете использовать command + B для выполнения ваших проектов Python.
Нажмите здесь, чтобы проверить дополнительную информацию.
Ответ 3
Вы ищете пользовательские системы сборки.
В строке меню нажмите Tools -> Build Systems -> New Build System...
Заполните полученный шаблон и сохраните его под любым именем файла, заканчивающимся на .sublime-build
, в папку User
.
Вот документация для создания пользовательских систем сборки:
http://docs.sublimetext.info/en/latest/reference/build_systems.html
Я рекомендую создать пользовательскую систему сборки для скриптов python, а затем добавить варианты для каждого виртуального env, который вы хотите. (см. варианты http://docs.sublimetext.info/en/latest/reference/build_systems.html#variants)
Вы создаете систему сборки, вы можете переключать их из
Tools -> Build Systems
(если он не обнаружен автоматически) и используйте командную палитру (по умолчанию ctrl + shift p) для переключения между вариантами.
Единственный "gotcha" - это параметр "cmd"
, описывающий, какую команду запускать. По умолчанию для запуска в качестве команды требуется массив строк, но вместо этого вы можете использовать "shell_cmd"
, чтобы просто использовать строку того, как вы будете запускать ее через командную строку.
Ответ 4
У меня есть альтернатива. Просто создайте новую "Build System", которая работает как в виртуальной среде. Здесь мы называем это "my_python". Цель состоит в том, чтобы использовать эту систему сборки для запуска моего script напрямую, не оставляя возвышенного. Вам необходимо:
- Сначала
preferences->Browse Packages
. Это откроет папку, в которой хранятся файлы настроек. Перейдите в каталог User
и создайте новый файл с именем my_python.sublime-build
(состоящий из имени системы сборки, за которым следует .sublime_build
. После этого перейдите к Tools -> Build System
, и вы увидите новую опцию my_python
.
-
Добавьте следующие параметры JSON в этот файл.
{
"shell_cmd": "/Users/Ted/bsd/vector/.v_venv/bin/python -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
Внутри shell_cmd
измените /Users/Ted/bsd/vector/.v_venv/bin/python
на путь вашей виртуальной среды python.
-
Затем просто используйте короткий ключ для создания script.
Если вы хотите изменить свою виртуальную среду, просто скопируйте ее путь к установочному файлу и все сделайте. Возможно, подход, похоже, содержит много работы, но он работает хорошо и удобно.