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

Как активировать virtualenv внутри терминала PyCharm?

Я установил PyCharm, создал мой virtualenv (либо через виртуальную команду env, либо непосредственно в PyCharm), и активировал эту среду в качестве моего интерпретатора. Все работает отлично.

Однако, если я открываю терминал с помощью "Инструменты, открытый терминал", то в приглашении оболочки не используется виртуальное env; Я все еще должен использовать source ~/envs/someenv/bin/activate внутри этого терминала, чтобы активировать его.

Другой метод - активировать среду в оболочке и запустить PyCharm из этой среды. Это "работоспособно", но довольно уродливо, и означает, что у меня есть серьезные проблемы, если я переключаю среды или проекты из PyCharm: теперь я использую совершенно неправильную среду.

Есть ли другой, гораздо более простой способ: "Инструменты, открытый терминал" автоматически активируют виртуальную среду?

4b9b3361

Ответ 1

Edit:

Согласно https://www.jetbrains.com/pycharm/whatsnew/#v2016-3-venv-in-terminal, PyCharm 2016.3 (выпущен ноябрь 2016) имеет поддержку virutalenv для терминалов из коробки

Авто virtualenv поддерживается для bash, zsh, fish и Windows cmd. Вы можете настроить свою оболочку в настройках (Предпочтения) | инструменты | Терминал.

<ч/" > Старый метод:

Создайте файл .pycharmrc в домашней папке со следующим содержимым

source ~/.bashrc
source ~/pycharmvenv/bin/activate

Использование вашего виртуального пути в качестве последнего параметра.

Затем установите для оболочки "Настройки" → "Параметры проекта" → "Шелл" путь к

/bin/bash --rcfile ~/.pycharmrc

Ответ 2

Обновление:

Настройки в Настройках (Настройки) | Инструменты | Терминал глобален.
Если вы используете venv для каждого проекта, не забудьте использовать текущую переменную пути и имя venv по умолчанию:

"cmd.exe" /k ""%CD%\venv\Scripts\activate"" 

Для пользователей Windows: при использовании PyCharm с виртуальной средой вы можете использовать параметр /K для cmd.exe для автоматической установки виртуальной среды.

PyCharm 3 или 4: Settings, Terminal, Default shell и добавьте /K <path-to-your-activate.bat>.

PyCharm 5: Settings, Tools, Terminal и добавьте /K <path-to-your-activate.bat> в Shell path.

PyCharm 2016.1 или 2016.2: Settings, Tools, Terminal, добавьте ""/K <path-to-your-activate.bat>"" к Shell path и добавьте (обратите внимание на кавычки). Также добавьте кавычки вокруг cmd.exe, в результате чего:

"cmd.exe" /k ""C:\mypath\my-venv\Scripts\activate.bat""

Ответ 3

Для пользователей Windows при использовании PyCharm и виртуальной среды под Windows вы можете использовать параметр /k для cmd.exe для автоматической настройки виртуальной среды.

Перейдите в Настройки, Терминал, Оболочка по умолчанию и добавьте /K <path-to-your-activate.bat>.

У меня нет репутации, чтобы комментировать предыдущий ответ, поэтому публикую эту исправленную версию. Это действительно экономит много времени.

Обновление:

Примечание: Pycharm теперь напрямую поддерживает виртуальные среды, и, похоже, он мне подходит, поэтому мой обходной путь больше не нужен.

Ответ 4

Основываясь на ответах Питера и экспериментов, я придумал хорошее "общее решение", которое решает следующее:

  • Восстанавливает поведение оболочки входа. PyCharm обычно запускает оболочку входа, но --rcfile остановил это. Script по-прежнему использует -rcfile, но пытается эмулировать поведение INVOCATION для оболочки входа.
  • Удаляет необходимость создания файла rc для каждой среды
  • Устраняет необходимость обновления параметров проекта при изменении среды.

Переместите этот Script в каталог bin где-нибудь. Например. ~/Bin/pycharmactivate

if [ -r "/etc/profile" ] ; then . /etc/profile ; fi
if [ -r "~/.bash_profile" ] ; then
    . ~/.bash_profile
elif [ -r "~/.bash_login" ] ; then
    . ~/.bash_login
elif [ -r "~/.profile" ] ; then
    . ~/.profile
fi
ACTIVATERC=`cat .idea/workspace.xml | perl -n -e 'print "\$1/bin/activate" if m:option name="SDK_HOME" value="\\\$USER_HOME\\\$(.*)/bin/python":'`
if [ -n "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; else echo "Could not find virtualenv from PyCharm" ; fi

Затем установите путь оболочки PyCharm для:

/bin/bash --rcfile ~/bin/pycharmactivate

Ответ 5

Спасибо, Крис, ваш script работал на некоторые проекты, но не на моей машине. Вот script, который я написал, и я надеюсь, что кто-нибудь найдет его полезным.

#Stored in ~/.pycharmrc 

ACTIVATERC=$(python -c 'import re
import os
from glob import glob

try:
  #sets Current Working Directory to _the_projects .idea folder
  os.chdir(os.getcwd()+"/.idea") 

  #gets every file in the cwd and sets _the_projects iml file
  for file in glob("*"): 
    if re.match("(.*).iml", file):
      project_iml_file = file

  #gets _the_virtual_env for _the_project
  for line in open(project_iml_file):
    env_name = re.findall("~/(.*)\" jdkType", line.strip())
    # created or changed a virtual_env after project creation? this will be true
    if env_name:
      print env_name[0] + "/bin/activate"
      break

    inherited = re.findall("type=\"inheritedJdk\"", line.strip())
    # set a virtual_env during project creation? this will be true
    if inherited:
      break

  # find _the_virtual_env in misc.xml
  if inherited:
    for line in open("misc.xml").readlines():
      env_at_project_creation = re.findall("\~/(.*)\" project-jdk", line.strip())
      if env_at_project_creation:
        print env_at_project_creation[0] + "/bin/activate"
        break
finally:
  pass
')

if [ "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; fi

Ответ 6

В PyCharm 4 интегрированы virtualenvs в IDE. При выборе интерпретатора проекта вы можете создать, добавить или выбрать virtualenv. Они добавили "консоль Python", которая запускается в настроенном интерпретаторе проекта.

Больше информации здесь.

Ответ 7

Я просмотрел все ответы выше, но ни один из них не достаточно изящный для меня. В Pycharm 2017.1.3 (на моем компьютере) самый простой способ - открыть Settings->Tools->Terminal и проверить опции Shell integration и Activate virtualenv.

image

Ответ 8

Если вы используете версию Windows, это довольно просто. Если у вас уже есть виртуальная среда, просто перейдите к ее папке, найдите activate.bat внутри Scripts. скопируйте его полный путь и вставьте его в терминал pycharm, затем нажмите Enter, и все готово!

Если вам нужно создать новую виртуальную среду:

Идите в файлы > настройки, затем найдите project interpreter, откройте его, нажмите кнопку переключения передач и создайте среду, где хотите, а затем следуйте первому абзацу.

The Gear!

Ответ 9

На Mac это PyCharm => Настройки... => Инструменты => Терминал => Активировать virtualenv, который должен быть включен по умолчанию.

Ответ 10

Я только что добавил script с именем pycharmactivate в свой домашний каталог. Задайте значение PyCharm (4.0.1) Файл > Настройки > Инструменты > Терминал > Путь оболочки к /bin/ bash --rcfile ~/pycharmactivate. Возможно, это не лучшее решение, потому что у вас есть разные проектные и виртуальные каталоги/имена, но это работает для меня. Этот script содержит следующие 3 строки и предполагает, что ваш virtualenv имеет то же имя, что и ваш проект dir.

source ~/.bashrc
projectdir=${PWD##*/}
source ~/.virtualenvs/$projectdir/bin/activate

Ответ 11

После ответа Питера, здесь версия Mac файла .pycharmrc:

source /etc/profile
source ~/.bash_profile
source  <venv_dir>/bin/activate

Курица

Ответ 12

У меня есть решение, которое работало на моей машине с Windows 7.

Я считаю, что терминал PyCharm является результатом его запуска cmd.exe, который загрузит переменную Windows PATH и использует версию Python, которую он найдет первым в этом PATH. Чтобы изменить эту переменную, щелкните правой кнопкой мыши "Мой компьютер" → "Свойства" → "Расширенные настройки системы" → вкладка "Дополнительно" → "Переменные среды...". В разделе "Системные переменные" выберите и отредактируйте переменную PATH.

Вот соответствующая часть моего редактирования PATH до:

C:\python27 \;
C:\python27\Lib\сайт-пакеты\пип \;
C:\python27\Scripts;
C:\python27\Lib\сайт-пакеты\Джанго\Bin;

... и после редактирования PATH (теперь только 3 строки):

C: [project_path]\virtualenv-Py2.7_Dj1.7\Lib\сайт-пакеты\пип;
C: [project_path]\virtualenvs\virtualenv-Py2.7_Dj1.7\Scripts;
C: [project_path]\virtualenvs\virtualenv-Py2.7_Dj1.7\Lib\сайт-пакеты\Джанго\Bin;

Чтобы проверить это, откройте терминал Windows new (Пуск → введите cmd и нажмите Enter) и посмотрите, использует ли он свою виртуальную среду. Если это работает, перезапустите PyCharm, а затем проверьте его в терминале PyCharm.

Ответ 13

это то, что я делаю: создайте файл active_env.bat(windows, возможно .sh in linux) в папке с исходным кодом:

/env_yourenvlocate/scripts/activate.bat

и еще один файл deactivate_env.bat:

/env_yourenvlocate/scripts/deactivate.bat

каждый раз открывайте окно терминала, просто выполняйте файл bat, чтобы активировать/деактивировать virtualenv, вы останетесь в пути к исходному коду, не нужно менять путь и обратно.

E:\Projects\django_study\src>active_env.bat

E:\Projects\django_study\src>../env_django_study/scripts/activate.bat
(env_django_study) E:\Projects\django_study\src>



(env_django_study) E:\Projects\django_study\src>deactive_env.bat

(env_django_study)E:\Projects\django_study\src>../env_django_study/scripts/deactivate.bat
E:\Projects\django_study\src>

Ответ 14

Если ваш Pycharm 2016.1.4v и выше вы должны использовать "default path" /K "<path-to-your-activate.bat>" не забывайте кавычки

Ответ 15

Другим вариантом является использование virtualenvwrapper для управления вашей виртуальной средой. Похоже, что когда активируется virtualenvwrapper script, pycharm может его использовать, а затем простая команда workon будет доступна из консоли pycharm и представить вам доступные виртуальные среды:

[email protected]:~/Development/django-tutorial$ workon
django-tutorial
FlaskHF
SQLAlchemy
themarkdownapp
[email protected]:~/Development/django-tutorial$ workon django-tutorial
(django-tutorial)[email protected]:~/Development/django-tutorial$ 

Ответ 16

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

Вы пишете:

  • Глобальный script, который вызывает hook
  • Крючок script за проект PyCharm (не обязательно)

Учитывая, что текущий последний PyCharm (Community 2016.1) не позволяет устанавливать параметры терминалов для каждого проекта с помощью script, который вызывает конкретный крюк проекта. Это мой ~/.pycharmrc:

if [ -r ".pycharm/term-activate" ]; then
   echo "Terminal activation hook detected."
   echo "Loading Bash profile..."
   source ~/.bash_profile
   echo "Activating terminal hook..."
   source ".pycharm/term-activate"
   source activate $PYCHARM_VENV
fi

Если вы используете что-то другое, кроме Bash, вызовите свой собственный эквивалент .bash_profile, если хотите.

Теперь установите PyCharm "Tools → Terminal → Shell Path" для вызова этого script, например: /bin/bash --rcfile ~/.pycharmrc

Наконец, для каждого проекта PyCharm вам нужно активировать определенную виртуальную среду, создайте файл в корне проекта проекта PyCharm .pycharm/term-activate. Это ваш крючок, и он просто определит имя желаемой виртуальной среды для вашего проекта PyCharm:

export PYCHARM_VENV=<your-virtual-env-name>

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

Ответ 17

Для виртуальных сред conda в Windows убедитесь, что ваш командный файл НЕ имеет имя activate.bat, так как это приведет к конфликту с командой conda activate, что приведет к рекурсивному вызову командного файла.

Для меня работает следующий путь оболочки:

"cmd.exe" /k ""C:\FullPathToYourProject\activate-env.bat""

И в файле activate-env.bat:

call activate myenvname

Ответ 18

Мне нужна отдельная виртуальная среда для каждого проекта, и мне было не очень важно иметь дополнительные файлы для облегчения этого. Решение, которое вам нужно выполнить только один раз и для всех проектов, добавляет следующее к вашим .bashrc или .bash_profile:

if [ -d "./venv" ]; then
    source ./venv/bin/activate
fi

Это проверяет, существует ли виртуальная среда, в которой открыт терминал, и если это так активирует (и, конечно же, можно использовать другие относительные пути). Настройки терминала PyCharm могут быть оставлены как по умолчанию.

Ответ 19

PyCharm 4.5.4

Создайте файл .pycharmrc в своей домашней папке со следующим Содержание

source ~/.bashrc
source ~/pycharmvenv/bin/activate

Использование вашего виртуального пути в качестве последнего параметра.

Затем установите для оболочки "Настройки" → "Параметры проекта" → "Шелл" путь к

/bin/bash --rcfile ~/.pycharmrc

Я не понимаю, но это не работает для меня. PyCharm печатает ошибку.

cmd.exe /K "<path-to-your-activate.bat>" Он работает, но он создает тот же virtualenv для каждого проекта, и даже если это не нужно.

Этот квитанция работает! Но строка /env_yourenvlocate/scripts/activate.bat должна содержать кавычки, такие как "Full_path_to_your_env_locate\scripts\activate.bat"!

Деактивировать virtualenv очень просто - введите терминал "deactivate"

(virt_env) D:\Projects\src>deactivate
D:\Projects\src>

Ответ 20

Решение для WSL (Ubuntu в Windows)

Если вы используете WSL (Ubuntu в Windows), вы также можете открыть bash в качестве терминала в pycharm и активировать linux virtualenv.

Используйте файл .pycharmrc, как описано в ответе Питера Гибсона; Добавьте файл .pycharmrc в свой домашний каталог со следующим содержимым:

source ~/.bashrc
source ~/path_to_virtualenv/bin/activate

В Pycharm File> Настройки> Инструменты> Терминал добавьте следующий "путь к оболочке":

"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"


Специфический проект virtualenv

Путь к вашей добродетели в .pycharmrc не должен быть абсолютным. Вы можете установить для конкретного проекта virtualenv, указав относительный путь из каталога вашего проекта. Мой virtualenv всегда находится в папке 'venv' в каталоге моего проекта, поэтому мой файл .pycharmrc выглядит следующим образом:

source ~/.bashrc
source ~/pycharmvenv/bin/activate #absolute path
source ./venv/bin/activate #relative path


БОНУС: автоматически открывать туннель ssh для подключения virtualenv в качестве интерпретатора проекта

Добавьте следующее в свой файл .pycharmrc:

if [ $(ps -aux | grep -c 'ssh') -lt 2 ]; then
    sudo service ssh start 
fi

Это проверяет, открыт ли уже ssh-туннель, и открывает его в противном случае. В меню Файл → Настройки → Проект → Интерпретатор проектов в Pycharm добавьте новый удаленный интерпретатор со следующей конфигурацией:

+--------------------------+---------------------------------+-------+----+
| Name:                    | <Interpreter name>              |       |    |
| Select                   | 'SSH Credentials'               |       |    |
| Host:                    | 127.0.0.1                       | Port: | 22 |
| User:                    | <Linux username>                |       |    |
| Auth type:               | 'Password'                      |       |    |
| Password:                | <Linux password>                |       |    |
| Python interpreter path: | <Linux path to your virtualenv> |       |    |
| Python helpers path:     | <Set automatically>             |       |    |
+--------------------------+---------------------------------+-------+----+

Теперь, когда вы открываете свой проект, ваш bash автоматически запускается в вашем virtualenv, открывает ssh-туннель, и pycharm подключает virtualenv в качестве удаленного интерпретатора.

предупреждение: последнее обновление в Windows автоматически запускает службы SshBroker и SshProxy при запуске. Они блокируют туннель SSH от Linux до Windows. Вы можете остановить эти сервисы в Диспетчере задач → Сервисы, после чего все снова заработает.

Ответ 21

Один вариант у вас есть, когда вы входите в терминал> Выполнить> Отладка> Изменить настройки enter image description here

enter image description here

выберите соответствующий conda environmentmnent.. Также при создании нового проекта - он просит настроить это местоположение.