Использование virtualenv с возвышенным текстом 2

Я использую возвышенный текст 2 для разработки на Python вместе с virtualenv!

Стандартная возвышенная система сборки текста 2 использует стандартную установку Python, а не мою virtualenv, где установлены мои пакеты.

Как я могу получить возвышенный текст 2 для сборки, используя мой virtualenv?

В настоящее время я использую терминал для активации своей среды и запуска своих сценариев.

ОБНОВЛЕНИЕ: Никогда не заставляло это работать, но видя, как я использую флягу, и она строит, когда вы вносите изменения, это не большая проблема

15 ответов

Решение

Обратите внимание, что комментарии об этом решении неверны.

Вы должны отредактировать файл вашего возвышенного проекта и добавить следующее:

"build_systems":
[
    {
    "name": "Run Tests",
    "cmd": ["source", "/path/to/your/virtualenv/bin/activate"],
    "working_dir": "/path/to/to/you/django_project",
    "cmd": ["python", "manage.py", "test"]
    }
]

Вы также можете установить путь для системы сборки к bin каталог вашего virtualenv, вот так:

"build_systems":
[
    {
        "selector": "source.python",
        "env": {"PYTHONPATH":"/Users/user/project"},
        "path":"/Users/user/work/myvirtualenv/bin:$PATH",
        "name": "Run virtualenv python",
        "cmd": ["python", "-u", "$file"],
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

        "variants": [
            {   "name": "Run all Tests",
                "working_dir": "/Users/user/project",
                "cmd": ["nosetests"]
            } 
        ]
    }
]

Это также позволяет другие инструменты, такие как nose в примере, чтобы найти правильный двоичный файл python из virtualenv.

В Windows это работает для меня:

"build_systems":
[
    {
    "name": "Run Tests",
    "working_dir": "/path/to/to/your/django_project",
    "cmd": ["/path/to/your/virtualenv/bin/python.exe", "manage.py", "test"]
    }
]

Система сборки Sublime поддерживает переменные, которые можно использовать с файлами проектов Sublime, чтобы сделать его немного более переносимым между проектами.

Если ваши виртуальные среды находятся в стандартном месте, создайте новый файл проекта ("Проект" -> "Сохранить проект как") в корневом каталоге вашего проекта чуть выше каталога виртуальной среды. Затем создайте новый файл сборки с чем-то вроде этого:

{

    "cmd": ["$project_path/venv/bin/python", "-u", "$file"]

}

Кажется, что он автоматически выбирает все остальное - так же, как если бы вы ввели./venv/bin/python из командной строки - не нужно связываться с путями, переменными среды и т. Д.

Я использую Flask, но думаю, что это применимо почти ко всем случаям.
Моя настоящая сборка такая, где "benicio" - это каталог моего проекта:

{
    "cmd": ["source ~/projs/benicio/venv/bin/activate && python ~/projs/benicio/benicio_tests.py"],
    "shell": true
}

Извините, что добавил еще один ответ на этот вопрос - но это вызвало у меня большое горе от выяснения этого.

Вам нужно не только создать систему сборки, такую ​​как:

"build_systems":
[
{
    "name": "Maths",
    "env": {"PYTHONPATH":"/home/nebffa/Desktop"},
    "path":"$project_path/bin",
    "cmd": ["$project_path/bin/python3.3", "-u", "$file"]
}
]

но вы ДОЛЖНЫ изменить настройку в Sublime Text - перейдите в Tools -> Build System -> "Maths". В моем случае мне нужно выбрать "Maths", потому что именно так я и назвал свою систему сборки. Если вы этого не сделаете - Sublime Text не использует вашу систему сборки!!

Я только что получил возвышенный текст 3 для работы в virtualenv. Хотя в ОП указан ST2, там все, скорее всего, больше нравятся мне, которые используют ST3. Благодаря user1248490 и Расселу Битти я пришел к следующему:

{
    "shell_cmd": "$project_path/vi_sys_pkgs/bin/python3 -u \"$file\"",
    "path": "$project_path/vi_sys_pkgs/bin",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

Обратите внимание, что "cmd" теперь является "shell_cmd" в ST3. Смотрите блог ST3

Под MAC OSX это работает для меня

{
"cmd": ["/your/virtualenv/bin/python", "-u", "$file"]
}

Что я сделал, так это просто:

Пошел на корневой диск и создал папку python:

sudo mkdir python

затем вошел туда и создал virtualenv

virtualenv --no-site-packages virtualenvname

затем создал новую сборку в ST2 с помощью вышеуказанной команды, и она работает

Это то, что у меня есть как система сборки (при условии, что мой virtualenv создан как папка с именем 'env' в каталоге моего текущего проекта). По крайней мере, это означает, что мне не нужно постоянно менять систему сборки между проектами:

{
   "cmd": ["env/bin/python", "-u", "$file"]
}

Я сохранил это как Новая система сборки (Инструменты -> Система сборки -> Новая система сборки).

Эта комбинация работала отлично:2 шага

1) добавьте 2 соответствующих ключа к ключу 'env'. A) DJANGO_SETTINGS_MODULE B) PYTHONPATH

2) обновите cmd, чтобы отразить версию python, которую вы хотите использовать.

{

"env":{"DJANGO_SETTINGS_MODULE":"my_project.settings",
    "PYTHONPATH":"d:\\Projects\\virts\\my_project\\Scripts;d:\\Projects\\virts\\my_project\\Lib;d:\\Projects\\virts\\my_project\\Lib\\site-packages;D:\\Projects\\my_project"
    },
"cmd": ["c:/Python27/python.exe","$file"]
}

Это сработало для меня:

{
    "cmd": ["C:/Users/user/virtualenvs/env1/Scripts/python.exe", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

сохраненная сборка в:

"C:\Users\user\AppData\Roaming\Sublime Text 2\Packages\User\"

как

"Python_env1.sublime-build"

Выбрать

Tools> Build System> Python_env1

сделанный!

используя windows 8.1, st2

Я использую это для создания своего проекта Flask. Я добавил следующий код в мои настройки проекта: Проект -> Редактировать проект

{
     "folders":
     [
          {
               "path": "/C/MyDev/chilinzb/"
          }
     ],
     "build_systems":
    [
        {
            "name": "Flask",
            // activate the specific virtualenv for the project
            "cmd": ["C:/MyDev/virtualenvs/env_chilinzb/Scripts/python", "$file"]
        }
    ]
}

а потом я просто переключаюсь на мой run.py подать и нажать Ctrl+B

Источник не работал для меня внутри сборки на lubuntu. используйте "." или точка вместо "источника".

это сработало:

{

    "env": {
    "DJANGO_SETTINGS_MODULE":"django_project_name.settings",
    "PYTHONPATH":"/home/my_username/current/django_project_name:/home/my_username/.virtualenvs/django_project_name/lib/python2.7:/home/my_username/.virtualenvs/django_project_name/lib/python2.7/site-packages/"
},
"working_dir":"$project_path",
"cmd":[". /home/my_username/.virtualenvs/django_project_name/bin/activate && python $file"],
"shell":true

}

Предполагая, что вы храните свой файл virtualenv в папке.env на верхнем уровне вашего проекта.

  1. Sublime> Project> Сохранить проект как... (если вы этого еще не сделали. Это позволит вам установить пользовательские параметры сборки для проекта
  2. Проект> Редактировать проект:

    {
       "folders":[
           {
               "path": ".",
               "folder_exclude_patterns": [".env"],
           }
       ],
       "build_systems":[
           {
               "name": "Run in VirtualEnv",
               "shell_cmd": "source $project_path/.env/bin/activate && python -u $file"
           }
       ]
    }
    
  3. Инструменты> Построить систему> Запустить в VirtualEnv

  4. Инструменты> Построить

Обратите внимание, что это было проверено с Sublime Text 3.

У меня есть ответ для любого, кто использует Heroku и использует их инструмент мастера, и он прекрасно работает. Просто создайте новую систему сборки следующим образом:

{
    "cmd": ["foreman", "run", "python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

Это включает все переменные среды, доступные Foreman, включая переменную $PATH вашего virtualenv, которая добавляет Python virtualenv в ваш путь к Python.

Другие вопросы по тегам