如何在 PyCharm 终端内激活虚拟环境?
- 2025-02-18 09:24:00
- admin 原创
- 170
问题描述:
我已经设置了 PyCharm,创建了我的虚拟环境(通过虚拟环境命令或直接在 PyCharm 中创建),并将该环境激活为我的解释器。一切运行正常。
但是,如果我使用“工具,打开终端”打开终端,提供的 shell 提示符不会使用虚拟环境;我仍然必须source ~/envs/someenv/bin/activate
在该终端内使用它来激活它。
另一种方法是在 shell 中激活环境,然后从该环境运行 PyCharm。这种方法“可行”,但非常丑陋,这意味着如果我从 PyCharm 切换环境或项目,就会遇到大问题:我现在使用的环境完全错误。
是否有其他更简单的方法可以让“工具、打开终端”自动激活虚拟环境?
解决方案 1:
编辑:
根据https://www.jetbrains.com/pycharm/whatsnew/#v2016-3-venv-in-terminal,PyCharm 2016.3(2016 年 11 月发布)具有对终端的 virutalenv 支持
bash、zsh、fish 和 Windows cmd 支持自动虚拟环境。您可以在“设置(首选项)”|“工具”|“终端”中自定义 shell 首选项 | 勾选“激活虚拟环境”
您还需要确保虚拟环境路径包含在项目结构的内容根文件夹中。如果您的环境未包含在项目目录中,您可以转到设置(首选项)| 项目 | 项目结构 |。
旧方法:.pycharmrc
在您的主文件夹中创建一个包含以下内容的文件
source ~/.bashrc
source ~/pycharmvenv/bin/activate
使用您的虚拟环境路径作为最后一个参数。
然后将 shell Preferences->Project Settings->Shell path 设置为
/bin/bash --rcfile ~/.pycharmrc
解决方案 2:
更新:
设置(首选项)| 工具 | 终端中的首选项是全局的。
如果您为每个项目使用一个 venv,请记住使用当前路径变量和默认 venv 名称:
"cmd.exe" /k ""%CD%envScriptsactivate""
对于 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:mypathmy-venvScriptsactivate.bat""
解决方案 3:
不知怎的,一个小技巧对我有用。你所要做的就是将默认终端从 Power shell 更改为 CMD。
打开 pycharm --> 进入设置 --> 工具 --> 终端
更改
Shell Path
为C:Windowssystem32cmd.exe
PS
勾选
Activate virtualenv
复选框点击
apply
并打开新终端
2021 年您不需要指定文件路径或添加环境变量。
更新:现在是 2022 年,我遇到了同样的问题。
修复:请按照上述步骤操作,此外,请确保已选择虚拟环境 python.exe 作为项目 python 解释器,就这样
解决方案 4:
对于 Windows 用户,在 Windows 下使用 PyCharm 和虚拟环境时,可以使用 cmd.exe 的 /k 参数自动设置虚拟环境。
转到设置、终端、默认 shell 并添加/K <path-to-your-activate.bat>
。
我没有资格对之前的回复发表评论,所以发布这个修正版本。这确实节省了很多时间。
更新:
注意:Pycharm 现在直接支持虚拟环境,而且对我来说似乎效果很好 - 所以不再需要我的解决方法。
解决方案 5:
如果您使用的是 Windows 版本,则非常简单。如果您已经有虚拟环境,只需导航到其文件夹,找到文件夹activate.bat
内部Scripts
。复制其完整路径并将其粘贴到 pycharm 的终端中,然后按Enter
即可完成!
如果需要创建新的虚拟环境:
转到文件>设置,然后搜索project interpreter
,打开它,单击齿轮按钮并在您想要的任何位置创建环境,然后按照第一段进行操作。
解决方案 6:
我已经查看了上述所有答案,但对我来说,它们都不够优雅。在 PyCharm 2017.1.3(在我的计算机上)中,最简单的方法是打开Settings->Tools->Terminal
并检查Shell integration
选项Activate virtualenv
。
解决方案 7:
根据 Peter 的回答和实验,我想出了一个很好的“通用解决方案”,它解决了以下问题:
恢复登录 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
解决方案 8:
PyCharm 4 现在已在 IDE 中集成了虚拟环境。选择项目解释器时,您可以创建、添加或选择虚拟环境。他们添加了在配置的项目解释器中运行的“Python 控制台”。
更多信息请见此处。
解决方案 9:
谢谢 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
解决方案 10:
如果你已经将项目移动到另一个目录,你可以通过设置对话框设置新路径。然后你需要在编辑配置对话框中设置这个项目解释器。
解决方案 11:
在 Mac 上,它是PyCharm => 首选项... => 工具 => 终端 => 激活 virtualenv,默认情况下应该启用。
解决方案 12:
我刚刚将一个名为 pycharmactivate 的脚本添加到我的主目录中。将 PyCharm (4.0.1) 的值设置为文件 > 设置 > 工具 > 终端 > Shell 路径为 /bin/bash --rcfile ~/pycharmactivate。如果您有不同的项目和虚拟环境目录/名称,这可能不是最好的解决方案,但它对我有用。此脚本包含以下 3 行,并假定您的虚拟环境与您的项目目录同名。
source ~/.bashrc
projectdir=${PWD##*/}
source ~/.virtualenvs/$projectdir/bin/activate
解决方案 13:
这是我正在做的事情:在源代码文件夹中创建一个 activate_env.bat(windows,linux 中可能是 .sh)文件:
/env_yourenvlocate/scripts/activate.bat
另一个文件是 deactivate_env.bat:
/env_yourenvlocate/scripts/deactivate.bat
每次打开终端窗口,只需执行 bat 文件来激活/停用虚拟环境,您将停留在源代码路径中,无需更改路径并返回。
E:Projectsdjango_studysrc>active_env.bat
E:Projectsdjango_studysrc>../env_django_study/scripts/activate.bat
(env_django_study) E:Projectsdjango_studysrc>
(env_django_study) E:Projectsdjango_studysrc>deactive_env.bat
(env_django_study)E:Projectsdjango_studysrc>../env_django_study/scripts/deactivate.bat
E:Projectsdjango_studysrc>
解决方案 14:
根据 Peter 的回答,这里是该.pycharmrc
文件的 Mac 版本:
source /etc/profile
source ~/.bash_profile
source <venv_dir>/bin/activate
母鸡
解决方案 15:
WSL 的解决方案(Windows 上的 Ubuntu)
如果您使用的是 WSL(Windows 上的 Ubuntu),您也可以在 pycharm 中打开 bash 作为终端并激活 linux 虚拟环境。
使用.pycharmrc
Peter Gibson 的答案中描述的文件;将.pycharmrc
文件添加到您的主目录,内容如下:
source ~/.bashrc
source ~/path_to_virtualenv/bin/activate
在 Pycharm文件 > 设置 > 工具 > 终端中添加以下“Shell 路径”:
"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"
项目特定的虚拟环境
虚拟环境的路径.pycharmrc
不必是绝对路径。您可以通过设置项目目录中的相对路径来设置特定于项目的虚拟环境。我的虚拟环境始终位于项目目录下的“venv”文件夹中,因此我的.pycharmrc
文件如下所示:
source ~/.bashrc
source ~/pycharmvenv/bin/activate #绝对路径
源 ./venv/bin/activate #相对路径
奖励:自动打开 ssh 隧道以连接 virtualenv 作为项目解释器
将以下内容添加到您的.pycharmrc
文件中:
if [ $(ps -aux | grep -c 'ssh') -lt 2 ]; then
sudo service ssh start
fi
这将检查 ssh 隧道是否已打开,否则将打开一个。在Pycharm 中的文件 -> 设置 -> 项目 -> 项目解释器中,使用以下配置添加一个新的远程解释器:
+-------------------------------------+--------------------------------+--------+----+
| 姓名:| <解释器姓名> | | |
| 选择 | ‘SSH 凭证’ | | |
| 主机:| 127.0.0.1 | 端口:| 22 |
| 用户:| <Linux 用户名> | | |
| 授权类型: | '密码' | | |
| 密码:| <Linux 密码> | | |
| Python 解释器路径: | <你的虚拟环境的 Linux 路径> | | |
| Python 帮助程序路径: | <自动设置> | | |
+-------------------------------------+--------------------------------+--------+----+
现在,当您打开项目时,您的 bash 会自动在您的虚拟环境中启动,打开 ssh 隧道,并且 pycharm 会将虚拟环境作为远程解释器连接。
警告:Windows 中的最新更新会在启动时自动启动 SshBroker 和 SshProxy 服务。这些服务会阻止从 Linux 到 Windows 的 SSH 隧道。您可以在任务管理器 -> 服务中停止这些服务,之后一切都会恢复正常。
解决方案 16:
我在 PyCharm 中使用venv时也遇到了同样的问题。但这不是什么大问题!只需执行以下操作:
进入你的终端 venv 目录( cd venv/Scripts/ )
您将看到activate.bat
只需在您的终端中输入 activate.bat 之后您将看到您的(venv)
解决方案 17:
我遇到了类似的问题,即在 pycharm 终端 ( Pycharm 版本 2021.2.2 ) 中未激活 venv。只需按照以下步骤操作即可。
转到“设置->工具->终端”,然后在该窗口的底部检查“激活虚拟环境”是否有勾选,如果没有,则确保该框被勾选。
然后在该窗口的中间部分检查 shell 路径是否设置为“cmd.exe”,如果没有,则将其设置为“cmd.exe”(它将具有与之关联的路径,因此无需执行任何操作,只需从下拉列表中单击“cmd.exe”),然后单击下面的“应用”按钮并单击“确定”。
现在完成了,只需关闭打开的终端并重新打开它。您将在项目路径前面看到“venv”。
附言:不要介意我的答案中的双引号,它们只是为了突出显示文本,仅此而已。
解决方案 18:
Windows 简易解决方案:
在 Pycharm 中,左侧的项目菜单里会有文件夹。
找到脚本文件夹
你会在里面找到 activate.bat
右键单击 activate.bat
复制/路径参考
选择绝对路径
找到位于 Pycharm 底部中间的终端选项卡。
将其粘贴到终端控制台并按 Enter
如果您操作正确,终端路径将在您激活的文件夹名称周围带有括号(venv)。
之前:“PS C:\”
之后:“(venv) C:\”
注意文件夹名称可能与您的不同,重要的部分是(括号):D
解决方案 19:
遇到了同样的问题,我是这样解决的:
您要做的就是将默认终端从 Power shell 更改为 CMD。打开 pycharm --> 转到设置 --> 工具 --> 终端。将 Shell 路径从 PS 更改为 C:\Windows\system32\cmd.exe。选中激活虚拟环境复选框。点击应用并打开新终端。
解决方案 20:
我有一个适用于我的 Windows 7 机器的解决方案。
我相信 PyCharm 的终端是它运行的结果cmd.exe
,它将加载 WindowsPATH
变量,并使用在其中首先找到的 Python 版本PATH
。要编辑此变量,请右键单击我的电脑-->属性-->高级系统设置-->高级选项卡 -->环境变量...按钮。在系统变量部分中,选择并编辑PATH
变量。
PATH
以下是我编辑之前的相关部分:
C:\Python27\;
C:\Python27\Lib\site-packages\pip\;
C:\Python27\Scripts;
C:\Python27\Lib\site-packages\django\bin;
...编辑后PATH
(现在只有 3 行):
C:[项目路径]\virtualenv-Py2.7_Dj1.7\Lib\site-packages\pip;
C:[项目路径]\virtualenvs\virtualenv-Py2.7_Dj1.7\Scripts;
C:[项目路径]\virtualenvs\virtualenv-Py2.7_Dj1.7\Lib\site-packages\django\bin;
要测试这一点,请打开一个新的Windows 终端(开始--> 输入cmd
并点击Enter
),看看它是否正在使用您的虚拟环境。如果有效,请重新启动 PyCharm,然后在 PyCharm 的终端中进行测试。
解决方案 21:
如果你的 Pycharm 2016.1.4v 及更高版本,你应该使用"default path" /K "<path-to-your-activate.bat>"
不要忘记引号
解决方案 22:
在 Windows 上,如果您已经有虚拟环境(例如位于项目根目录中的“myvenv”),则可以从终端激活它,如下所示:
.myvenvScriptsactivate
从您想要激活的虚拟环境调用激活,激活虚拟环境。
当你看到变化时,你就知道它已被激活:
C:ProjectsTrunkMyProject>
到
(myvenv)C:ProjectsTrunkMyProject>
解决方案 23:
如果你使用的是带有 wsl2 的 Windows,那么对我而言唯一有用的方法(2022 年 11 月)是:
进入Pycharm终端定义
粘贴:
wsl.exe -- bash --rcfile <(echo '. ~/.bashrc; source <path-to-your-virtial-env>/bin/activate')
在‘Shell 路径’框内。
然后每次打开终端时虚拟环境就会被激活。
解决方案 24:
另一种选择是使用virtualenvwrapper来管理您的虚拟环境。看来,一旦激活了 virtualenvwrapper 脚本,pycharm 就可以使用它,然后workon
pycharm 控制台中就会提供简单的命令,并向您显示可用的虚拟环境:
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$
解决方案 25:
此方法应该适用于每个项目的任意虚拟环境,并且它不会对您的环境做出假设,因为它使用您创建的钩子。
你写道:
调用钩子的全局脚本
每个 PyCharm 项目一个钩子脚本(非强制性)
鉴于当前最新的 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“工具 -> 终端 -> Shell 路径”来调用此脚本,例如:/bin/bash --rcfile ~/.pycharmrc
最后,对于每个需要激活特定虚拟环境的 PyCharm 项目,请在 PyCharm 项目根目录中创建一个文件.pycharm/term-activate
。这是您的钩子,它将简单地定义您的 PyCharm 项目所需虚拟环境的名称:
export PYCHARM_VENV=<your-virtual-env-name>
当然,您可以使用您在特定 PyCharm 项目的终端环境中发现的任何有用的东西来扩展您的钩子。
解决方案 26:
对于 Windows 上的 conda 虚拟环境,请确保您的批处理文件未命名activate.bat
,因为这会导致与 conda 命令冲突activate
,从而导致批处理文件的递归调用。
对我有用的是以下 Shell 路径:
"cmd.exe" /k ""C:FullPathToYourProjectactivate-env.bat""
在 activate-env.bat 文件中:
call activate myenvname
解决方案 27:
我希望每个项目都有一个单独的虚拟环境,并且不太在意是否有额外的文件来促进这一点。您只需执行一次并适用于所有项目的解决方案是将以下内容添加到您的.bashrc
或.bash_profile
:
if [ -d "./venv" ]; then
source ./venv/bin/activate
fi
这将检查是否存在打开终端的虚拟环境,如果是,则激活它(当然也可以使用其他相对路径)。PyCharm 的终端设置可以保留为默认设置。
解决方案 28:
PyCharm 4.5.4
在你的主文件夹中创建一个 .pycharmrc 文件,其中包含以下内容
source ~/.bashrc source ~/pycharmvenv/bin/activate
使用您的虚拟环境路径作为最后一个参数。
然后将 shell Preferences->Project Settings->Shell path 设置为
/bin/bash --rcfile ~/.pycharmrc
我不知道为什么,但它对我来说不起作用。PyCharm 打印错误。
cmd.exe /K "<path-to-your-activate.bat>"
它可以起作用,但是它为每个项目创建相同的虚拟环境,即使这不是必要的。
这张收据可以正常工作!但字符串/env_yourenvlocate/scripts/activate.bat
必须包含引号,就像这样"Full_path_to_your_env_locatescriptsactivate.bat"
!
停用虚拟环境非常简单 - 在终端中输入“deactivate”
(virt_env) D:Projectssrc>deactivate
D:Projectssrc>
解决方案 29:
进入终端时,有一个选项:运行 > 调试 > 编辑配置
选择适当的 conda 环境.. 另外,当您创建一个新项目时 - 它会要求配置这个位置。
解决方案 30:
如您所见,python 解释器位于 venv/bin/python。如果您转到此文件夹,您将看到其中列出的所有库
...正如您所想的那样,您可以使用 python 命令及其路径 - 例如在项目路径中
./venv/bin/pytest
扫码咨询,免费领取项目管理大礼包!