windows环境下使用批处理在虚拟环境里运行python程序

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
当然可以,以下是我为你准备的关于在虚拟环境中使用批处理运行Python的教程:


前言

在某些情况下,我们需要通过批处理文件在虚拟环境中运行Python程序。在这篇教程中,我们将介绍如何做到这一点,并记录一些自己踩坑的经历。


现有:虚拟环境myenv,目标应用程序my_script.py。


一、批处理文件和虚拟环境是什么?

批处理文件是一种文本文件,它包含一系列可以由操作系统批量执行的Windows命令。在Python开发中,我们经常使用虚拟环境来创建独立的Python运行环境,以避免不同项目之间的依赖冲突。


二、如何使用批处理在虚拟环境中运行Python程序?

1. 创建批处理文件

首先,我们需要创建一个.bat文件。在文本编辑器中,输入文章第2节命令并保存为.bat文件。

2. 激活虚拟环境并运行Python程序

我们需要添加运行Python程序的命令。假设我们要运行的Python文件名为my_script.py,批处理文件内容应如下:

@echo off
cmd /K "D:\anaconda\Scripts\activate.bat myenv && python C:\Users\PycharmProjects\pythonProject\test\my_script.py"

现在,双击运行这个批处理文件,就可以在指定的虚拟环境中运行Python程序了。


3. 涉及到的知识

以下是一些在批处理中常用的命令及其解释:

命令解释
@echo off关闭命令的回显,即在执行命令时,不会在控制台窗口显示这些命令。
echo显示一条消息或将消息写入文件。例如,echo Hello World将在控制台窗口显示"Hello World",而echo Hello World > file.txt将"Hello World"写入file.txt。
call调用另一个批处理文件从而在当前批处理文件中执行其命令。
cmd /K在新的命令提示符窗口中执行指定的命令,但不关闭该窗口。
cmd /C在新的命令提示符窗口中执行指定的命令,并且关闭该窗口。
&&将两个命令组合在一起,第二个命令只有在第一个命令成功执行后才会执行。
pause暂停批处理文件的执行,并显示一条消息。
set设置环境变量。
rem添加注释。
goto跳转到批处理文件中标记的位置。
:label创建一个可以用goto命令跳转到的标记。
if用于编写条件语句。

这些命令可以组合在一起,编写复杂的批处理文件。

4. 踩坑记录

最开始看了网上教程,有如下:

@echo off
call D:\anaconda\Scripts\activate.bat
conda activate myenv
python C:\path\to\my_script.py

这样运行不但会闪退,而且只会激活我们的虚拟环境。在这个批处理文件中,我们是通过分别执行call D:\anaconda\Scripts\activate.bat和conda activate myenv来激活conda环境的。然后通过调用python可执行文件来运行Python脚本。但是在此过程中,一旦执行完call D:\anaconda\Scripts\activate.bat,就会启动一个新的shell,conda activate myenv会在这个新的shell中执行,而不是在启动python脚本的原始shell中。所以,python脚本并没有在预期的conda环境中运行,导致了错误。而使用通过执行一条命令cmd /K "D:\anaconda\Scripts\activate.bat myenv && python C:\Users\PycharmProjects\pythonProject\test\my_script.py"来同时激活conda环境和运行Python脚本的。cmd /K命令能保证后面的命令在同一个shell中执行,所以python脚本能在正确的conda环境中运行。

总结

在这篇教程中,我们学习了如何使用批处理文件在虚拟环境中运行Python程序。本人希望在自己记录日常的同时,帮助到更多的人,祝你在Python编程旅程中一切顺利!


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值