Sublime text3 и virtualenvs

Я совершенно новый с sublime3, но я не мог найти ничего полезного для моей проблемы...

У меня разные virtualenvs (сделанные с virtualenwrapper), и я хотел бы указать, какой venv использовать с каждым проектом

поскольку я использую плагин SublimeREPL для пользовательских сборок, как я могу указать, какая установка python для создания моего проекта?

например, когда я работаю над проектом A, я хочу запускать скрипты с python venvA, и когда я работа над проектом B Я хочу запускать вещи с venvB (используя другой скрипт сборки)

простите мой ужасный английский...

4 ответов


надеюсь, это вдоль линий, которые вы себе представляете. Я попытался упростить свое решение и удалить некоторые вещи, которые вам, вероятно, не нужны.

преимуществами этого метода являются:

  • нажмите одну кнопку, чтобы запустить SublimeREPL с правильным интерпретатором и при желании запустите в нем файл.
  • после установки интерпретатора никакие изменения или дополнительные шаги не необходимы при переключении между проектами.
  • может быть легко расширяется для автоматического выбора конкретных переменных среды проекта, желаемых рабочих каталогов, запуска тестов, открытия оболочки Django и т. д.

Дайте мне знать если вы имеете любые вопросы, или если я полностью пропустил знак о том, что вы хотите сделать.

установить интерпретатор Python проекта

  1. открыть файл проекта для редактирования:

    Project -> Edit Project
    
  2. Добавить новый ключ к настройкам проекта, который указывает к желаемому virtualenv:

    "settings": {
        "python_interpreter": "/home/user/.virtualenvs/example/bin/python"
    }
    

A "python_interpreter" ключ настроек проекта также используется плагинами, такими как Анаконда.

создать плагин, чтобы захватить эту настройку и запустить SublimeREPL

  1. перейдите к Sublime Text's :

    Preferences -> Browse Packages...
    
  2. создайте новый файл python для нашего плагина, что-то вроде: project_venv_repls.py

  3. скопируйте следующий 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'
                }
            )
    

Установить Горячие Клавиши

  1. открыть файл привязки ключей пользователя:

    Preferences -> Key Bindings - User
    
  2. добавьте несколько клавиш, чтобы использовать плагин. Некоторые примеры:

    // 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. Вам нужно:

  1. во-первых,preferences->Browse Packages. Это откроет папку, под которой лежат файлы настроек. Иди внутрь, реж.--2--> и создайте новый файл с именем my_python.sublime-build (состоит из имени системы сборки, за которым следует .sublime_build. После этого перейдите в Tools -> Build System и вы увидите новый вариант my_python.
  2. добавьте в этот файл следующие настройки 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.

  3. затем просто используйте короткий ключ для создания сценария.

если вы хотите изменить свою виртуальную среду, просто скопируйте ее путь в файл настроек и все готово. Возможно, подход, кажется, содержит много работает, но работает хорошо и удобно.