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



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



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



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



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

2519   20  

20 ответов:

Edit:

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

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


Старый Метод:

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

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

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

затем установите параметры оболочки - > настройки проекта - > Путь оболочки к

/bin/bash --rcfile ~/.pycharmrc

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

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

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

обновление:

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

для пользователей Windows: при использовании PyCharm с виртуальной средой вы можете использовать до 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 и добавить (обратите внимание на кавычки). Также добавьте кавычки вокруг УМК.exe, в результате чего:

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

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

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

поместите этот скрипт в каталог 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

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

#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

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

подробнее здесь.

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

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

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

The Gear!

Я только что добавил скрипт с именем pycharmactivate в мой домашний каталог. Установите значение PyCharm (4.0.1) File > Settings > Tools > Terminal > Shell path to /bin/bash --rcfile ~/pycharmactivate. Возможно, не лучшее решение, если у вас есть разные каталоги/имена проектов и virtualenv, но это работает для меня. Этот сценарий содержит следующие 3 строки и предполагает, что ваш virtualenv имеет то же имя, что и ваш проект dir.

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

продолжение ответа Питера, здесь Mac версия .pycharmrc file:

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

курица

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

Я считаю, что терминал PyCharm является результатом его работы cmd.exe, который будет загружать окна PATH переменная, и использовать версию Python, что он находит первый в этом PATH. Чтобы изменить эту переменную, щелкните правой кнопкой мыши Мой Компьютер -->свойства -->Дополнительные Параметры Системы -->Advanced tab -->Переменные Среды... кнопка. Внутри системные переменные раздел, выберите и отредактируйте PATH переменной.

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

C:\Python27\;
C:\Python27\Lib\site-packages\pip\;
C:\Python27\Scripts;
C:\Python27\Lib\site-packages\django\bin;

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

C: [project_path]\virtualenv-Py2.7_Dj1. 7\Lib\site-packages\pip;
C: [project_path]\virtualenvs\virtualenv-Py2.7_Dj1. 7\Scripts;
C: [project_path]\virtualenvs\virtualenv-Py2.7_Dj1. 7\Lib\site-packages\django\bin;

чтобы проверить это, откройте новая терминал windows ( Start --> тип cmd и нажмите Enter) и посмотреть, если он использует виртуальную среду. Если это сработает,перезапустить PyCharm а затем проверить его в терминале PyCharm.

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

/env_yourenvlocate/scripts/activate.bat

и еще один файл deactivate_env.летучая мышь:

/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>

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

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

image

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

kevin@debian:~/Development/django-tutorial$ workon
django-tutorial
FlaskHF
SQLAlchemy
themarkdownapp
kevin@debian:~/Development/django-tutorial$ workon django-tutorial
(django-tutorial)kevin@debian:~/Development/django-tutorial$ 

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

вы пишете:

  • глобальный скрипт, который вызывает Хук
  • скрипт крючка для проекта PyCharm (не обязательно)

учитывая, что текущая последняя PyCharm (Community 2016.1) не допускает настройки терминала в проекте начать с сценарий, который вызывает определенный крючок проекта. Это мой ~/.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" для вызова этого скрипта, например:/bin/bash --rcfile ~/.pycharmrc

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

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

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

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

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

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

и в активе-env.bat-файла:

call activate myenvname

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

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

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

PyCharm 4.5.4

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

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

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

затем установите параметры оболочки - > настройки проекта - > Путь оболочки к

/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 очень просто-наберите в терминале 'деактивировать'

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

решение для WSL (Ubuntu на Windows)

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

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

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

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

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


проект конкретного virtualenv

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

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


бонус: автоматически открыть ssh туннель для подключения virtualenv как интерпретатор проекта

добавить следующий код .pycharmrc file:

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 соединяет виртуальное окружение в качестве удаленного переводчика.

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

один вариант у вас, когда вы входите в терминал > "Выполнить" > "Отладка" > Редактирование Конфигурации enter image description here

enter image description here

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

Comments

    Ничего не найдено.