如何激活PyCharm终端内的virtualenv?

 as8244433 发布于 2023-01-19 10:01

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

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

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

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

6 个回答
  • 编辑:

    根据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-> Project Settings-> Shell path设置为

    /bin/bash --rcfile ~/.pycharmrc
    

    2023-01-19 10:01 回答
  • 对于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""

    2023-01-19 10:01 回答
  • 对于Windows用户在Windows下使用PyCharm和虚拟环境时,可以使用cmd.exe中的/ k参数自动设置虚拟环境.

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

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

    更新:

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

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

    更多信息在这里.

    2023-01-19 10:03 回答
  • 谢谢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
    

    2023-01-19 10:04 回答
  • 基于彼得的答案和实验,我提出了一个很好的"通用解决方案",它解决了以下问题:

    恢复登录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
    

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

    /bin/bash --rcfile ~/bin/pycharmactivate
    

    2023-01-19 10:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有