电脑上安装了Miniconda的软件,使用其自带的python解释器执行脚本,安装包也是安装在指定环境下,但运行python执行器时会出现
warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https://conda.io/activation。
此报警表示python装在conda的环境,此时需要指定使用conda的那个环境并激活才可以使用该路径下的包,直接运行python无法加载包。网上查找相关资料有三种方式可以解决此问题。
手动激活需要每次在运行python脚本之前,先激活环境,这也是conda官网介绍的方式,缺点就是每次需要激活比较麻烦。激活指令"conda activate (myenv)",不输入自己配置的环境名的话则激活系统默认环境base.接下来就可以执行自己的脚本了,此方式不再过多介绍。
此方式通过另外安装python软件和需要的包,并在环境变量中将python软件的路径放在conda的路径之前,这样再用python执行脚本时就会优先使用python软件而不是conda,也就不存在环境激活的问题。
但这种方式违背了安装miniconda简易方便的初衷,如果确实有安装python软件的需求,也可通过此方式进行配置,网上资料较多,不再介绍。
此方式是比较推荐,原理是修改powerShell的配置文件,当启动powershell时可自动激活conda的环境。
我的需求是go语言编写一个小软件,可以自动运行python的脚本,电脑上只有conda的环境。
首先尝试通过go运行cmd控制台,先执行"conda active"指令,再执行"python main.py"运行脚本程序。这种方式试了很多次没有成功,可能是没有找到正确的方法。
然后在网上找到了通过PowerShell自动激活环境的方式,参考链接【报错记录】powershell自动激活conda环境
第一步:powershell运行代码conda init powershell
第二步:重新以管理员身份运行Set-ExecutionPolicy RemoteSigned
第三步:重启powershell,显示加载个人配置用时***,即表示修改成功
按照博主的方式确实可以在不激活环境的情况下执行脚本,下面就是通过程序启动powershell执行脚本就行。下面为代码,使用的是golang的"github.com/CodyGuo/win"包。
cmd := "powershell /c start python " + sourceConfig.PythonEnv.Path + "\\main.py"
lpCmdLine := win.StringToBytePtr(cmd)
ret := win.WinExec(lpCmdLine, win.SW_SHOW)
if ret <= 31 {
fmt.Println("进程启动失败", errors.New(winExecError[ret]))
}