Подтвердить что ты не робот

Возвышенный текст3 и virtualenvs

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

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

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

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

извините мой страшный английский...

4b9b3361

Ответ 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, чтобы установить его.

После его установки выберите ToolsBuild SystemPython + 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.

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