JawsIk
@JawsIk
Python Django, Lua, ЧПУ-станки(ArtCam, Aspire)

Как в Sublime Text 3 сделать любое автодополнение кода с виртуальным окружением?

Перед началом хочу дать понять, что я использую PyCharm, но у меня есть оборудование очень старое 10-ти летней давности ноут, который его не тянет. Поэтому я хочу сделать микро-IDE python на основе Sublime Text 3 (потому что он быстрый и своими установленными модулями не гадит в виртуальном окружении проекта). Далее к сути:

Устанавливаю Sublime Text 3.
Ставлю Package Control и устанавливаю нужные модули.
Я привык, что virtual enveroment у меня лежит в папке v (а рядом уже сами файлы проекта). Мой установленный SublimeREPL настроен так, чтобы он запускался используя как раз моё виртуальное окружение. И он прекрасно работает.
Ставлю Анаконду (чтобы были автоформатинг кода (при сохранении файла), линтер и хотелось бы автодополнение кода (ну то, которое появляется подсказками через точку))
И вот автодополнение с модулями из стандартной библиотеки прекрасно работает. А с теми, которые установил я в своё виртуальное окружение, увы нет. Вот как это исправить?
Пробовал ставить Jedi. Всё ровно тоже самое.
Где в настройках пакета Anaconda указать, чтобы он использовал моё виртуальное окружение?
Например в том же SublimeREPL я просто сделал в Key Binding вот так и работает:
{ 
        "keys": ["ctrl+b"], 
        "command": "repl_open", 
        "args": {
                "cmd": ["$folder/v/Scripts/python.exe", "-i", "-u", "$file_basename"], 
                "cwd": "$file_path", 
                "encoding": "utf8", 
                "extend_env": {"PYTHONIOENCODING": "utf-8"},
                "view_id": "*REPL* [python]",
                "external_id": "python", 
                "syntax": "Packages/Python/Python.tmLanguage", 
                "type": "subprocess"
        }
    },


А где в анаконде прописать, чтобы он знал про модули в виртуальном окружении, я так и не нашёл.

В Jedi есть такие настройки (где я пробовал разные варианты, но он так и не видит модули из моего виртуального окружения):
{
	// You can set a path to your python virtualenv,
    // for example `/home/user/.virtualenvs/myenv)`.
    // Note: Interpreter path would be found automaticaly

    // "python_virtualenv": "./v",
    // "python_virtualenv": "./v/",
    // "python_virtualenv": "v/",
    // "python_virtualenv": "/v",
    "python_virtualenv": "e:/py/testbot/v",


    // You can set a path to your python interpreter,
    // for example `/home/user/.virtualenvs/myenv/bin/python)`.

    // "python_interpreter": "./v/Scripts/python",
    // "python_interpreter": "v/Scripts/python",
    // "python_interpreter": "./v/Scripts/python.exe",
    "python_interpreter": "e:/py/testbot/v/Scripts/python",

    // "sublime_completions_visibility": "all",
}


Как настроить, чтобы автодополение кода из Anaconda или Jedi (или может какое другое) понимало, что надо работать с виртуальным окружением из папки v/ (шут с ним, я переименую в другое имя папки, лишь бы работало)?

p.s. может надо какой-нить файл создать (ну по типу .gitignore) в котором будут прописаны правила для всего проекта сублима, и чтобы этим правилам подчинялась Anaconda или Jedi? Если знаете, подскажите.
  • Вопрос задан
  • 590 просмотров
Решения вопроса 1
Amunrah
@Amunrah
Сказочный персонаж ))
Хз кто как делает, а я добавил пару строк в Sublime_text\Data\Packages\Jedi - Python autocompletion\sublime_jedi\utils.py:

5efa61cb80ef4840755280.png
Кстати надо перезапустить после изменений
А в файле проекта пишу примерно следующее:

{
  "virtualenv": "$folder/.Venv",
  "settings": 
  {
    "python_interpreter": "$folder/.Venv/Scripts/python.exe"
  },
	"folders":
	[
		{
			"path": "Path/To/My/Project"
		}
	]
}

Соответственно папка с виртуальным окружением у меня называется .Venv и располагается в корне проекта
И все работает :)

ПыСы: Но по идее можно тупо прописать путь в файле проекта - типа "virtualenv": "path/to/venv", у меня просто sublime на флэшке и приходится везде использовать относительные пути
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы