Sublime text3 и virtualenvs
Я совершенно новый с sublime3, но я не мог найти ничего полезного для моей проблемы...
У меня разные virtualenvs (сделанные с virtualenwrapper), и я хотел бы указать, какой venv использовать с каждым проектом
поскольку я использую плагин SublimeREPL для пользовательских сборок, как я могу указать, какая установка python для создания моего проекта?
например, когда я работаю над проектом A, я хочу запускать скрипты с python venvA, и когда я работа над проектом B Я хочу запускать вещи с venvB (используя другой скрипт сборки)
простите мой ужасный английский...
4 ответов
надеюсь, это вдоль линий, которые вы себе представляете. Я попытался упростить свое решение и удалить некоторые вещи, которые вам, вероятно, не нужны.
преимуществами этого метода являются:
- нажмите одну кнопку, чтобы запустить SublimeREPL с правильным интерпретатором и при желании запустите в нем файл.
- после установки интерпретатора никакие изменения или дополнительные шаги не необходимы при переключении между проектами.
- может быть легко расширяется для автоматического выбора конкретных переменных среды проекта, желаемых рабочих каталогов, запуска тестов, открытия оболочки Django и т. д.
Дайте мне знать если вы имеете любые вопросы, или если я полностью пропустил знак о том, что вы хотите сделать.
установить интерпретатор Python проекта
-
открыть файл проекта для редактирования:
Project -> Edit Project
-
Добавить новый ключ к настройкам проекта, который указывает к желаемому virtualenv:
"settings": { "python_interpreter": "/home/user/.virtualenvs/example/bin/python" }
A "python_interpreter"
ключ настроек проекта также используется плагинами, такими как Анаконда.
создать плагин, чтобы захватить эту настройку и запустить SublimeREPL
-
перейдите к Sublime Text's :
Preferences -> Browse Packages...
создайте новый файл python для нашего плагина, что-то вроде:
project_venv_repls.py
-
скопируйте следующий python код в этот новый файл:
import sublime_plugin class ProjectVenvReplCommand(sublime_plugin.TextCommand): """ Starts a SublimeREPL, attempting to use project's 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's 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' } )
Установить Горячие Клавиши
-
открыть файл привязки ключей пользователя:
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" } }
существует пакет sublime text3 с именем Virtualenv
, что позволяет создавать с помощью Python из вашего virtualenv.
он поддерживает любые версии Python в вашем virtualenv и очень хорошо работает для меня (MacOS).
чтобы установить его, мы просто команда+Shift+P чтобы вызвать pacakge control (установите его, если у вас его еще нет), введите install
. Следующий тип virtualenv
, когда вы видите, что он появляется нажмите возвращение для ее установки.
после установки выберите Tools
-->Build System
-->Python + Virtualenv
. Тогда вы можете использовать команда + B для выполнения ваших проектов Python.
клик здесь для проверки дополнительной информации.
вы ищете для пользовательских систем.
в строке меню, нажмите кнопку Tools -> Build Systems -> New Build System...
заполнить шаблон и сохраните его под любым именем, заканчивающийся в .sublime-build
на .
вот документация для создания пользовательских систем сборки:
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) для переключения между вариантами.
единственный подвох -"cmd"
параметр для описания команды для запуска. По умолчанию для запуска в качестве команды, но вы можете использовать просто использовать строку, как вы бы запустить его через командную строку.
у меня есть альтернатива. Просто создание новой "системы сборки", которая работает как в виртуальной среде. Здесь мы называем это "my_python". Цель состоит в том, чтобы использовать эту систему сборки для запуска моего скрипта напрямую, не выходя из sublime. Вам нужно:
- во-первых,
preferences->Browse Packages
. Это откроет папку, под которой лежат файлы настроек. Иди внутрь, реж.--2--> и создайте новый файл с именем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. затем просто используйте короткий ключ для создания сценария.
если вы хотите изменить свою виртуальную среду, просто скопируйте ее путь в файл настроек и все готово. Возможно, подход, кажется, содержит много работает, но работает хорошо и удобно.