首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PyCharm的终端中激活一个virtualenv?

如何在PyCharm的终端中激活一个virtualenv?
EN

Stack Overflow用户
提问于 2014-03-10 05:43:39
回答 14查看 193.4K关注 0票数 130

我已经设置了PyCharm,创建了我的virtualenv (通过虚拟环境命令,或者直接在PyCharm中),并将该环境激活为我的解释器。一切都运行得很好。

但是,如果我使用"Tools“,”open Terminal“打开一个终端,提供的shell提示符不是使用虚拟环境;我仍然必须在该终端中使用source ~/envs/someenv/bin/activate来激活它。

另一种方法是在shell中激活环境,然后从该环境运行PyCharm。这是“可行的”,但相当难看,这意味着如果我从PyCharm切换环境或项目,我会遇到重大问题:我现在使用的是完全错误的环境。

有没有其他更简单的方法让"Tools,Open Terminal“自动激活虚拟环境?

EN

回答 14

Stack Overflow用户

发布于 2015-04-30 02:19:19

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

More info here.

票数 8
EN

Stack Overflow用户

发布于 2017-07-26 11:10:17

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

票数 7
EN

Stack Overflow用户

发布于 2014-06-07 08:44:35

谢谢Chris,你的脚本适用于一些项目,但并不是所有的项目都在我的机器上。这是我写的一个脚本,我希望任何人都能发现它是有用的。

代码语言:javascript
复制
#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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22288569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档