我已经设置了PyCharm,创建了我的virtualenv(通过虚拟env命令,或直接在PyCharm中)并将该环境激活为我的Interpreter。一切都很好。
但是,如果我使用“工具,打开终端”打开终端,则提供的shell提示符不使用虚拟环境;我仍然必须在该终端内使用source ~/envs/someenv/bin/activate
来激活它。
另一种方法是在shell中激活环境,并从该环境运行PyCharm。这是“可行的”,但非常难看,如果我从PyCharm切换环境或项目,我就会遇到重大问题:我现在正在使用完全错误的环境。
还有其他一些更简单的方法让“工具,开放式终端”自动激活虚拟环境吗?
答案 0 :(得分:87)
<强> 编辑: 强>
根据https://www.jetbrains.com/pycharm/whatsnew/#v2016-3-venv-in-terminal,PyCharm 2016。3(2016年11月发布)对开箱即用的终端提供了virutalenv支持
bash,zsh,fish和Windows cmd支持Auto virtualenv。您 可以在“设置(首选项)”中自定义您的shell首选项工具 |终端
<小时/> 旧方法:
使用以下内容在主文件夹中创建文件.pycharmrc
source ~/.bashrc
source ~/pycharmvenv/bin/activate
使用您的virtualenv路径作为最后一个参数。
然后将shell Preferences-&gt; Project Settings-&gt; Shell路径设置为
/bin/bash --rcfile ~/.pycharmrc
答案 1 :(得分:38)
对于Windows用户在Windows下使用PyCharm和虚拟环境时,可以使用/ k参数cmd.exe自动设置虚拟环境。
转到设置,终端,默认shell并添加/K <path-to-your-activate.bat>
。
我没有声誉对先前的回复发表评论,因此发布了此更正版本。这确实节省了很多时间。
<强>更新强>
注意:Pycharm现在直接支持虚拟环境,它似乎对我有用 - 所以我的解决方法不再需要了。
答案 2 :(得分:37)
对于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 :(得分:7)
根据彼得的答案和实验,我提出了一个很好的通用解决方案&#34;,它解决了以下问题:
将此脚本放入某个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的Shell路径设置为:
/bin/bash --rcfile ~/bin/pycharmactivate
答案 4 :(得分:6)
谢谢Chris,你的脚本适用于某些项目但不适用于我的机器上。这是我写的脚本,我希望有人发现它很有用。
#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
答案 5 :(得分:6)
PyCharm 4现在已经在IDE中集成了virtualenvs。选择项目解释器时,您可以创建,添加或选择virtualenv。他们已经添加了一个&#34; Python控制台&#34;在配置的项目解释器中运行。
答案 6 :(得分:3)
在Mac上,它是 PyCharm =>首选项... =>工具=>终端=>激活virtualenv ,默认情况下应启用该功能。
答案 7 :(得分:3)
如果您使用的是Windows版本,则非常容易。
如果您已经拥有虚拟环境,只需导航到其文件夹,请在activate.bat
文件夹中找到Scripts
。复制它的完整路径并将其粘贴到pycharm的终端然后按Enter
即可完成!
如果您需要创建新的虚拟环境:
转到文件&gt;设置然后搜索project interpreter
,打开它,点击齿轮按钮并在任何地方创建环境,然后按照第一段。
答案 8 :(得分:2)
我刚刚在我的主目录中添加了一个名为pycharmactivate的脚本。设置PyCharm(4.0.1)文件的值&gt;设置&gt;工具&gt;终端&gt; Shell路径到/ bin / bash --rcfile~ / pycharmactivate。 也许不是最好的解决方案,因为你有不同的项目和virtualenv目录/名称,但它适用于我。此脚本包含以下3行,并假设您的virtualenv与项目目录具有相同的名称。
source ~/.bashrc
projectdir=${PWD##*/}
source ~/.virtualenvs/$projectdir/bin/activate
答案 9 :(得分:2)
我已经查看了上面的所有答案,但对我来说,这些答案都不够优雅。在Pycharm 2017.1.3(在我的电脑中),最简单的方法是打开Settings->Tools->Terminal
并检查Shell integration
和Activate virtualenv
选项。
答案 10 :(得分:2)
跟进彼得的回答,
这里是.pycharmrc
文件的Mac版本:
source /etc/profile
source ~/.bash_profile
source <venv_dir>/bin/activate
编
答案 11 :(得分:1)
在 Windows 上,如果您已经拥有虚拟环境,例如。 'myvenv' 位于项目根目录中,您可以从终端激活它,如下所示:
.\myvenv\Scripts\activate
从想要激活的 virtualenv 调用 activate 来激活 virtualenv。
当您看到更改时,您就知道它已激活:
C:\Projects\Trunk\MyProject>
到
(myvenv)C:\Projects\Trunk\MyProject>
答案 12 :(得分:1)
如果你应该使用Pycharm 2016.1.4v及更高版本
"default path" /K "<path-to-your-activate.bat>"
不要忘记引号
答案 13 :(得分:1)
这就是我在做的事情: 在源代码片段中创建一个activate_env.bat(windows,也许是linux中的.sh)文件:
/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 :(得分:1)
我的解决方案适用于我的Windows 7计算机。
我相信PyCharm的终端是运行cmd.exe
的结果,它将加载Windows PATH
变量,并使用它在PATH
内首先找到的Python版本。要编辑此变量,请右键单击我的电脑 - &gt; 属性 - &gt; 高级系统设置 - &gt; 高级标签 - &gt; 环境变量... 按钮。在系统变量部分中,选择并编辑PATH
变量。
以下是我的PATH
之前编辑的相关部分:
编辑C:\ Python27 \;
C:\ Python27 \ LIB \站点包\ PIP \;
C:\ Python27 \脚本;
C:\ Python27 \ LIB \站点包\ django的\ BIN;
PATH
后... (现在只有3行):
C:[project_path] \的virtualenv-Py2.7_Dj1.7 \ LIB \站点包\ PIP;
C:[project_path] \ virtualenvs \的virtualenv-Py2.7_Dj1.7 \脚本;
C:[project_path] \ virtualenvs \的virtualenv-Py2.7_Dj1.7 \ LIB \站点包\ django的\ BIN;
要对此进行测试,请打开新 Windows终端(开始 - &gt;在cmd
中输入并点击 Enter )并查看它是否正在使用您的虚拟环境。如果可行,重新启动PyCharm ,然后在PyCharm的终端中测试它。
答案 15 :(得分:0)
对于Windows上的conda虚拟环境,请确保批处理文件未命名为activate.bat
,因为这会导致与conda activate
命令冲突,从而导致批处理文件的递归调用。 / p>
对我来说有用的是以下Shell路径:
"cmd.exe" /k ""C:\FullPathToYourProject\activate-env.bat""
在activate-env.bat文件中:
call activate myenvname
答案 16 :(得分:0)
我想为每个项目创建一个单独的虚拟环境,并且没有太多关心是否有其他文件来促进这一点。您只需执行一次并适用于所有项目的解决方案,然后将以下内容添加到.bashrc
或.bash_profile
:
if [ -d "./venv" ]; then
source ./venv/bin/activate
fi
检查是否存在正在打开终端的虚拟环境,如果有,则激活它(当然可以使用其他相对路径)。 PyCharm的终端设置可以保留为默认设置。
答案 17 :(得分:0)
PyCharm 4.5.4
使用以下内容在主文件夹中创建文件.pycharmrc 内容
source ~/.bashrc source ~/pycharmvenv/bin/activate
使用您的virtualenv路径作为最后一个参数。
然后将shell Preferences-&gt; Project Settings-&gt; Shell路径设置为
/bin/bash --rcfile ~/.pycharmrc
我不知道为什么,但它对我不起作用。 PyCharm打印错误。
cmd.exe /K "<path-to-your-activate.bat>"
它有效,但它为每个项目创建了相同的virtualenv,即使这不是必需的。
这receipt正在运作!但字符串/env_yourenvlocate/scripts/activate.bat
必须包含引号,例如"Full_path_to_your_env_locate\scripts\activate.bat"
!
停用virtualenv非常简单 - 在终端输入&#39;停用&#39;
(virt_env) D:\Projects\src>deactivate
D:\Projects\src>
答案 18 :(得分:0)
此方法应适用于每个项目的任意虚拟环境,并且不会对您的环境进行假设,因为它使用您创建的挂钩。
你写道:
鉴于当前最新的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“工具 - &gt;终端 - &gt; Shell路径”来调用这个脚本,例如:/bin/bash --rcfile ~/.pycharmrc
最后,对于每个PyCharm项目,您需要激活特定的虚拟环境,在PyCharm项目根目录.pycharm/term-activate
中创建一个文件。这是你的钩子,它只是为你的PyCharm项目定义所需的虚拟环境的名称:
export PYCHARM_VENV=<your-virtual-env-name>
当然,您可以使用在特定PyCharm项目的终端环境中有用的任何内容扩展您的钩子。
答案 19 :(得分:0)
WSL解决方案(Windows上的Ubuntu)
如果您正在使用WSL(Windows上的Ubuntu),您还可以在pycharm中打开bash作为终端并激活linux virtualenv。
使用Peter Gibson的答案中描述的.pycharmrc
文件;将.pycharmrc
文件添加到您的主目录,其中包含以下内容:
source ~/.bashrc
source ~/path_to_virtualenv/bin/activate
在Pycharm 文件&gt;设置&gt;工具&gt;终端添加以下&#39; Shell路径&#39;:
"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"
项目特定的virtualenv
.pycharmrc
中virtualenv的路径不一定是绝对的。您可以通过设置项目目录中的相对路径来设置项目特定的virtualenv。
我的virtualenv总是位于一个&#39; venv&#39;我的项目目录下的文件夹,所以我的.pycharmrc
文件如下所示:
source ~/.bashrcsource ~/pycharmvenv/bin/activate#absolute path source ./venv/bin/activate #relative path
BONUS:自动打开ssh隧道连接virtualenv作为项目解释器
将以下内容添加到.pycharmrc
文件中:
if [ $(ps -aux | grep -c 'ssh') -lt 2 ]; then
sudo service ssh start
fi
检查ssh隧道是否已打开,否则打开一个。 在文件 - &gt;设置 - &gt;项目 - &gt; Pycharm中的Project Interpreter ,添加一个具有以下配置的新远程解释器:
+--------------------------+---------------------------------+-------+----+ | 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服务。这些阻止了从linux到windows的ssh隧道。您可以在任务管理器中停止这些服务 - &gt;服务,之后一切都会再次运作。
答案 20 :(得分:0)
答案 21 :(得分:0)
另一种方法是使用virtualenvwrapper来管理您的虚拟环境。看来,一旦virtualenvwrapper script is activated,pycharm就可以使用它,然后可以从pycharm控制台获得简单的workon
命令,并向您展示可用的虚拟环境:
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$
答案 22 :(得分:0)
答案 23 :(得分:0)
我在PyCharm中使用 venv 遇到了同样的问题。但这不是大问题! 只要做:
答案 24 :(得分:-2)