如何激活PyCharm终端内的virtualenv?

Chr*_*don 99 python django shell virtualenv pycharm

我已经设置了PyCharm,创建了我的virtualenv(通过虚拟env命令,或者直接在PyCharm中),并将该环境激活为我的Interpreter.一切都很好.

但是,如果我使用"工具,打开终端"打开终端,提供的shell提示符使用虚拟环境; 我仍然必须source ~/envs/someenv/bin/activate在该终端内使用它来激活它.

另一种方法是激活shell中的环境,并从该环境运行PyCharm.这是"可行的",但非常难看,如果我从PyCharm切换环境或项目,我就会遇到重大问题:我现在正在使用完全错误的环境.

是否有其他更简单的方法让"工具,开放式终端"自动激活虚拟环境?

Pet*_*son 88

编辑:

根据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
Run Code Online (Sandbox Code Playgroud)

使用virtualenv路径作为最后一个参数.

然后将shell Preferences-> Project Settings-> Shell path设置为

/bin/bash --rcfile ~/.pycharmrc
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我没想过要覆盖shell的rc文件.为了更好地支持pycharm使用多个项目,每个项目可能有不同的virtualenv,我将".pycharmrc"文件称为不同的东西,并且可能将它放入env目录本身.``〜/ pycharmenv/bin/terminalactivate```听起来是个不错的选择. (9认同)
  • @SiminJie,PyCharm 2016.3.2 有这样的选项。转到:设置 -> 工具 -> 终端。并确保启用了“激活 virtualenv”选项。 (2认同)

Adi*_*gor 40

不知何故,一个小技巧对我有用。您所要做的就是将默认终端从 Power shell 更改为 CMD。

  1. 打开 pycharm --> 转到设置 --> 工具 --> 终端
  2. 将 更改Shell PathC:\Windows\system32\cmd.exePS
  3. 检查Activate virtualenv复选框
  4. 点击apply并打开新终端

现在是 2021 年,您不需要指定文件路径或添加环境变量。

更新:现在是 2022 年,我遇到了同样的问题 修复:按照上述步骤操作,此外,确保您已选择您的虚拟环境 python.exe 作为您的项目 python 解释器,仅此而已


Sae*_*aeX 38

对于Windows用户:将PyCharm与虚拟环境一起使用时,可以使用该/K参数cmd.exe自动设置虚拟环境.

PyCharm 3或4: ,,Settings 和添加.TerminalDefault 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""

  • @Nick我不记得了,这是8年前的事了:-)同时另一个答案更相关(自2016.03发布以来)。我所知道的是它与双双引号一起工作,我不记得用单双引号测试过它。 (2认同)

Pri*_*r22 38

对于Windows用户在Windows下使用PyCharm和虚拟环境时,可以使用cmd.exe中的/ k参数自动设置虚拟环境.

转到设置,终端,默认shell并添加/K <path-to-your-activate.bat>.

我没有声誉对先前的回复发表评论,因此发布了此更正版本.这确实节省了很多时间.

更新:

注意:Pycharm现在直接支持虚拟环境,它似乎对我有用 - 所以我的解决方法不再需要了.


Chr*_*don 7

基于彼得的答案和实验,我提出了一个很好的"通用解决方案",它解决了以下问题:

  • 恢复登录shell的行为.PyCharm通常运行一个登录shell,但是--rcfile阻止了这种情况发生.脚本仍使用--rcfile,但尝试模拟登录shell的INVOCATION行为.
  • 无需为每个环境创建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
Run Code Online (Sandbox Code Playgroud)

然后将PyCharm的Shell路径设置为:

/bin/bash --rcfile ~/bin/pycharmactivate
Run Code Online (Sandbox Code Playgroud)


Ami*_*imi 7

如果您使用的是 Windows 版本,这很容易。如果您已经拥有虚拟环境,只需导航到其文件夹,找到activate.batinsideScripts文件夹。复制它的完整路径并将其粘贴到 pycharm 的终端中,然后按即可Enter完成!

如果您需要创建新的虚拟环境:

转到文件 > 设置,然后搜索project interpreter,打开它,单击齿轮按钮并在任何地方创建环境,然后按照第一段进行操作。

齿轮!


小智 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
Run Code Online (Sandbox Code Playgroud)


pfe*_*ate 6

PyCharm 4现在已经在IDE中集成了virtualenvs.选择项目解释器时,您可以创建,添加或选择virtualenv.他们添加了一个在配置的项目解释器中运行的"Python控制台".

更多信息在这里.

  • 这是如何回答OP的?仍然必须在终端中手动`source/path/to/venv/bin/activate`. (11认同)

WQY*_*WQY 6

我已经查看了上面的所有答案,但没有一个对我来说足够优雅。在Pycharm 2017.1.3(在我的电脑中),最简单的方法是打开Settings->Tools->Terminal并勾选Shell integrationActivate virtualenv选项。

图片


Kha*_*tur 5

如果您已将项目移动到另一个目录,您可以通过“设置”对话框设置新路径。然后您需要在“编辑配置”对话框中设置该项目解释器。

在此输入图像描述

在此输入图像描述