Как активировать virtualenv внутри терминала PyCharm?
Я установил PyCharm, создал мой virtualenv (либо через виртуальную команду env, либо непосредственно в PyCharm), и активировал эту среду в качестве моего интерпретатора. Все работает отлично.
Однако, если я открываю терминал с помощью "Инструменты, открытый терминал", то в приглашении оболочки не используется виртуальное env; Я все еще должен использовать source ~/envs/someenv/bin/activate
внутри этого терминала, чтобы активировать его.
Другой метод - активировать среду в оболочке и запустить PyCharm из этой среды. Это "работоспособно", но довольно уродливо, и означает, что у меня есть серьезные проблемы, если я переключаю среды или проекты из PyCharm: теперь я использую совершенно неправильную среду.
Есть ли другой, гораздо более простой способ: "Инструменты, открытый терминал" автоматически активируют виртуальную среду?
Ответы
Ответ 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..
Также при создании нового проекта - он просит настроить это местоположение.