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