Использование Virtualenv с Python с кодом Visual Studio в Ubuntu

86

У меня есть проект Python, и навигация / автозаполнение отлично работают в файлах в проекте. Я хочу указать virtualenv, чтобы навигация / автозаполнение работала с пакетами внутри этого virtualenv.

Я пробовал это в settings.py, но навигация / автозаполнение не работают. Также установкой "python.pythonPath":"~/dev/venvs/proj/bin/pythonубил исходную навигацию / автозаполнение.

{
    "editor.rulers": [80,100],
    "python.autoComplete.extraPaths": [
        "~/dev/venvs/proj",
        "~/dev/venvs/proj/lib"
     ]
}
Йесвин Хосе
источник
подобный шебанг тоже работает, если вы не хотите связываться с настройками: #! bin / python3
Alex R
youtu.be/6YLMWU-5H9o?t=550 здесь Дэн Тейлор объясняет, как запустить virtualenv в vscode
test30 01
Для последней версии кода я просто щелкнул интерпретатор python слева внизу, затем появилась палитра команд вверху посередине, выберите Введите путь к интерпретатору Python, затем выберите Найти ... затем найдите в ~ / ваш путь venv / bin / python, у меня python3.8
JCQian

Ответы:

96

С последним обновлением расширения все, что вам нужно сделать, это просто указать "python.pythonPath"следующее. Значения для "python.autoComplete.extraPaths"будут определены во время выполнения, но вы по-прежнему можете указать собственные пути там.

Пожалуйста, не забудьте перезапустить VS Code после внесения необходимых изменений.

{
    "editor.rulers": [80,100],
    "python.pythonPath":"~/dev/venvs/proj/bin/python"
}
Дон
источник
2
FWIW Я должен был использовать абсолютный путь, по крайней мере, для pylint
Кэт
6
Вы имеете ввиду в настройках рабочего пространства? Есть ли способ настроить предпочтение только для поддерева моей рабочей области?
yucer
3
Можете ли вы сделать это для каждого проекта?
Холмс
1
Дон выше прав. Пожалуйста, дважды проверьте веб-сайт VS Code: code.visualstudio.com/docs/python/…
Рикардо
5
@holms ага, вы хотите отредактировать настройки рабочего пространства ( .vscode/settings.json)
Atav32
91

По состоянию на сентябрь 2016 года (согласно документации Github репозитория расширения ) вы можете просто выполнить команду из vscode, которая позволит вам выбрать интерпретатор из автоматически сгенерированного списка известных интерпретаторов (включая тот, который находится в виртуальной среде вашего проекта).

Как пользоваться этой функцией?

  • Выберите команду Python: Select Workspace Interpreter(*) из палитры команд (F1).

  • После выбора указанной выше команды список обнаруженных интерпретаторов будет отображен в виде quick pickсписка.

  • Выбор интерпретатора из этого списка автоматически обновит файл settings.json .

(*) Эта команда была обновлена до Python: Select Interpreterпоследней версии VSC (спасибо @nngeek).
Также обратите внимание, что выбранный вами интерпретатор будет показан в левой части строки состояния, например, Python 3.6 64-бит. Это кнопка, которую вы можете нажать, чтобы активировать функцию «Выбрать переводчика».

Дэниел Ф.
источник
3
печальная вещь, это не позволяет мне добавить новый интерпретатор в список ... это вообще возможно?
originalfafa
@genuinefafa Я мало знаю о коде, но в документации репо, которую я связал, говорится, что интерпретаторы обнаруживаются при поиске в стандартных путях (/ usr / local / bin, / usr / sbin, / sbin), виртуальных средах под текущий проект и среды Conda. Возможно, вы могли бы добавить своего переводчика в одно из этих мест, чтобы он мог принимать его автоматически. Но я просто догадываюсь.
Дэниел Ф.
Хорошая идея, @DanielF. Я решаю это, но вручную настраиваю каталоги, указывающие на среду проекта. $PATHИдея не работает ( на самом деле это то , что workonсценарий должен делать). Это было протестировано несколько недель назад, не уверен, решит ли это в новых выпусках.
подлинныйfafa
4
Чтобы найти свой virtualenv, python.venvPathнеобходимо установить.
Махмуд Ханафи
2
По состоянию на декабрь 2017 г. с кодом 1.18.1 команда берется Python: Select Interpreterиз палитры команд. python workspace
Какое-то время
35

Довольно просто с последней версией VSCode, если вы установили официальное расширение Python для VSCode

Shift+ Command+P

Тип: Python: выберите переводчика

Выберите свой виртуальный env.

Официальный сайт

Дингли
источник
14
К сожалению, эта команда не выводит список локальных виртуальных окружений.
Антонин
@Antonin Я тестирую свой vscode в последней версии, он работает. Вы используете Mac или другую систему, и в чем ваша ошибка?
DingLi
1
Действительно, на Mac, спасибо @DingLi, после настройки это действительно сработало:"python.venvFolders": [ "${rootPath}", "envs", ".pyenv", ".direnv" ],
Антонин
1
@Antonin для виртуальных envs, см. Ответ
меча
2
Да, я действительно желаю вам и всем остальным перестать говорить «довольно просто». Виртуальные env не указаны, только интерпретаторы, версия macOS 2019.6. И этот вопрос говорит о virtualenv, а не только о интерпретаторах Python. @ssword имеет правильный ответ. Или, по крайней мере, я надеюсь, что он принесет остальную часть конфигурации на основе virtualenv, которая НЕ является просто исполняемым файлом python для использования.
JL Peyret
34

В последнем расширении Python для кода Visual Studio есть параметр venvPath:

// Path to folder with a list of Virtual Environments (e.g. ~/.pyenv, ~/Envs, ~/.virtualenvs).
  "python.venvPath": "",

В Mac OS X перейдите Code > Preferences > Settingsи прокрутите вниз до « Конфигурация Python» .

Найдите "python.venvPath: "",и щелкните карандаш слева, чтобы открыть пользовательские настройки. Наконец, добавьте путь к месту, где вы храните свои виртуальные среды.

Если вы используете virtuanenvwrapper или поместили все настройки виртуального env в одну папку, это будет то, что вам нужно.

После настройки "python.venvPath"перезапустите VSC. Затем откройте палитру команд и найдите «Python: Select Interpreter». На этом этапе вы должны увидеть интерпретатор, связанный с только что добавленной виртуальной средой.

меч
источник
13

Другой способ - открыть VSC с терминала с установленным virtualenv, и вам нужно выполнить F1 Python: Select Interpreterи выбрать требуемый virtualENV

virtualENV

pm.calabrese
источник
8
Похоже, это не работает для меня. Мне нужен файл настроек. Что-то мне не хватает?
McKay
1
Я успешно использовал этот метод, но мне пришлось выполнить код -a.
YoFlynn
1
Это дало мне правильный интерпретатор python, но не нашло остальную часть моего venv. Добавление моего имени каталога venv "ve" в python.venvFolders исправило это.
user1055568
1
Мой предыдущий комментарий был неправильным. У меня были другие проблемы, которые я принял за то, что не нашел venv.
user1055568
7

Предварительный ответ. Я поставил абсолютный путь к исполняемому файлу python виртуальной среды, а также содержит пакеты. Затем я перезапустил код VS.

Я пытаюсь получить $ {workspaceRoot}, чтобы избежать жесткого кодирования абсолютных путей, пожалуйста, помогите, если вам это удалось.

{
    "editor.rulers": [80,100],
    "python.pythonPath": "/home/jesvin/dev/ala/venv/bin/python",
    "python.autoComplete.extraPaths": [
        "/home/jesvin/dev/ala/venv/lib/python2.7",
        "/home/jesvin/dev/ala/venv/lib/python2.7/site-packages"
     ]
}
Йесвин Хосе
источник
2
Я поднял проблему на github.com/DonJayamanne/pythonVSCode/issues/148
Jesvin Jose
4

Я смог использовать настройку рабочего пространства, о которой просили другие люди на этой странице.

В настройках ⌘ + P найдите python.pythonPathв строке поиска.

Вы должны увидеть что-то вроде:

// Path to Python, you can use a custom version of Python by modifying this setting to include the full path.
"python.pythonPath": "python"

Затем щелкните вкладку НАСТРОЙКИ РАБОЧЕГО ПРОСТРАНСТВА в правой части окна. Это сделает настройку применимой только к той рабочей области, в которой вы находитесь.

После этого щелкните значок карандаша рядом с «python.pythonPath». Это должно скопировать настройку над настройками рабочего пространства.

Измените значение на что-то вроде:

"python.pythonPath": "${workspaceFolder}/venv"
Чарли Ле
источник
2

a) Измените параметр пути виртуального окружения по умолчанию для Visual Studio Code. Он называется «python.venvPath». Вы делаете это, перейдя в code-> settings и прокрутите вниз до настроек python.

б) Перезапустить VS Code

c) Теперь, если вы нажмете Shift + Command + P и наберете Python: Select Interpreter, вы увидите список своих виртуальных сред.

Аджай К.
источник
1

Похоже (по состоянию на 2018.03) в code-insider была введена директива python.venvFolders:

  "python.venvFolders": [
    "envs",
    ".pyenv",
    ".direnv"
  ],

Все, что вам нужно, это добавить имя вашей папки virtualenv.

Холмс
источник
1

В Mac OSX с использованием версии кода 1.34.0 (1.34.0) мне пришлось сделать следующее, чтобы VSCode распознал виртуальные среды:

Расположение моей виртуальной среды (с именем ml_venv):

/Users/auser/.pyvenv/ml_venv

auser@HOST:~/.pyvenv$ tree -d -L 2
.
└── ml_venv
    ├── bin
    ├── include
    └── lib

Я добавил следующую запись в Settings.json: "python.venvPath": "/Users/auser/.pyvenv"

Перезагрузил IDE, и теперь я мог видеть интерпретатор из моей виртуальной среды: введите описание изображения здесь

b.sodhi
источник
Использование абсолютного пути имеет значение. Это сработало для меня. Спасибо
Александр Сурафель
0

Получил с Youtube Настройка Python VS ... Venv

Хорошо, видео мне действительно не очень помогло, но ... первый комментарий под (человеком, который разместил видео) имеет большой смысл и чистое золото.

По сути, откройте встроенный терминал VS. Затем source <your path>/activate.sh, как обычно, вы выбираете venv из командной строки. У меня есть предопределенная функция bash для поиска и запуска нужного файла сценария, и она отлично работала.

Цитирую этот комментарий YT напрямую (все кредиты на aneuris ap ):

(вам действительно нужны только шаги 5-7)

1- Open your command line/terminal and type pip virtualenv.
2. Create a folder in which the virtualenv will be placed .
3. cd to the script folder in the virtualenv and run activate.bat (CMD).
4. deactivate to turn of the virtualenv (CMD).
5. open the project in VS Code  and use its built-in terminal to cd to the script folder in you virtualenv.
6. type source activates (in vs code I use the git terminal).
7. deactivate to turn off the virtualenv.

Как вы могли заметить, он говорит о activate.bat. Итак, если он работает для меня на Mac, и он работает и в Windows, скорее всего, он довольно надежный и портативный. 😀

JL Peyret
источник