自动激活anaconda环境并自动运行python脚本的方法

首先安装好anaconda Distribution | Anacondaicon-default.png?t=O83Ahttps://www.anaconda.com/download

其次配置好环境变量,增加

C:\ProgramData\anaconda3\Library\bin\

 

写一个runit.bat ,用于激活环境并调用run.bat

@echo off
conda activate base && run.bat
echo on

run.bat内容

cd /d C:\DataMining

python main.py
 

当然也可以直接写成一个runit.bat,如下 

@echo off
conda activate base && cd /d C:\DataMining && python main.py
echo ok

然后脑洞大开,连环境变量也可以自动加到bat中,如下

@echo off
set PATH=%PATH%;C:\ProgramData\anaconda3\Scripts;C:\ProgramData\anaconda3\Library\bin
conda activate base && cd /d C:\DataMining && python main.py
echo ok

然后就用runit.bat就可以一路执行了,也可以将这个文件放到系统启动文件夹中实现开机自启动。

再改进一下,如果上面的bat重复执行就会出问题,我们再改进一下逻辑让之后启动的bat结束之前运行的python代码,如下

chcp 65001
echo "first run cmd ->Anaconda Prompt ->conda init"
echo off
echo 查找运行 main.py 的 python.exe 进程...

rem 使用 wmic 查找 python.exe 中包含 main.py 的进程
for /f "tokens=2 delims=," %%i in ('wmic process where "name='python.exe' and commandline like '%%main.py%%'" get ProcessId /format:csv ^| findstr /r "[0-9]"') do (
    echo 发现运行 main.py 的 python.exe 进程,进程ID为 %%i
    set pid=%%i
    echo %pid%
    taskkill /F /PID %pid%
    echo 进程 %%i 已终止。
)

timeout /t 1 /nobreak >nul

rem 使用 wmic 查找 python.exe 中包含 main.py 的进程
for /f "tokens=2 delims=," %%i in ('wmic process where "name='python.exe' and commandline like '%%main.py%%'" get ProcessId /format:csv ^| findstr /r "[0-9]"') do (
    echo 发现运行 main.py 的 python.exe 进程,进程ID为 %%i
    set pid=%%i
    echo %pid%
    taskkill /F /PID %pid%
    echo 进程 %%i 已终止。
)

rem 使用 wmic 查找 python.exe 中包含 main.py 的进程
for /f "tokens=2 delims=," %%i in ('wmic process where "name='pythonw.exe' and commandline like '%%main.py%%'" get ProcessId /format:csv ^| findstr /r "[0-9]"') do (
    echo 发现运行 main.py 的 pythonw.exe 进程,进程ID为 %%i
    set pid=%%i
    echo %pid%
    taskkill /F /PID %pid%
    echo 进程 %%i 已终止。
)

timeout /t 1 /nobreak >nul

rem 使用 wmic 查找 python.exe 中包含 main.py 的进程
for /f "tokens=2 delims=," %%i in ('wmic process where "name='pythonw.exe' and commandline like '%%main.py%%'" get ProcessId /format:csv ^| findstr /r "[0-9]"') do (
    echo 发现运行 main.py 的 pythonw.exe 进程,进程ID为 %%i
    set pid=%%i
    echo %pid%
    taskkill /F /PID %pid%
    echo 进程 %%i 已终止。
)


set PATH=%PATH%;C:\ProgramData\anaconda3\Scripts;C:\ProgramData\anaconda3\Library\bin
conda activate base && cd /d "%~dp0" && python main.py
echo ok

另外如果不想在控制台输出日志可以用pythonw替换python,代码如下 :

chcp 65001
echo "first run cmd ->Anaconda Prompt ->conda init"
echo off
echo 查找运行 main.py 的 python.exe 进程...

rem 使用 wmic 查找 python.exe 中包含 main.py 的进程
for /f "tokens=2 delims=," %%i in ('wmic process where "name='python.exe' and commandline like '%%main.py%%'" get ProcessId /format:csv ^| findstr /r "[0-9]"') do (
    echo 发现运行 main.py 的 python.exe 进程,进程ID为 %%i
    set pid=%%i
    echo %pid%
    taskkill /F /PID %pid%
    echo 进程 %%i 已终止。
)

timeout /t 1 /nobreak >nul

rem 使用 wmic 查找 python.exe 中包含 main.py 的进程
for /f "tokens=2 delims=," %%i in ('wmic process where "name='python.exe' and commandline like '%%main.py%%'" get ProcessId /format:csv ^| findstr /r "[0-9]"') do (
    echo 发现运行 main.py 的 python.exe 进程,进程ID为 %%i
    set pid=%%i
    echo %pid%
    taskkill /F /PID %pid%
    echo 进程 %%i 已终止。
)

rem 使用 wmic 查找 python.exe 中包含 main.py 的进程
for /f "tokens=2 delims=," %%i in ('wmic process where "name='pythonw.exe' and commandline like '%%main.py%%'" get ProcessId /format:csv ^| findstr /r "[0-9]"') do (
    echo 发现运行 main.py 的 pythonw.exe 进程,进程ID为 %%i
    set pid=%%i
    echo %pid%
    taskkill /F /PID %pid%
    echo 进程 %%i 已终止。
)

timeout /t 1 /nobreak >nul

rem 使用 wmic 查找 python.exe 中包含 main.py 的进程
for /f "tokens=2 delims=," %%i in ('wmic process where "name='pythonw.exe' and commandline like '%%main.py%%'" get ProcessId /format:csv ^| findstr /r "[0-9]"') do (
    echo 发现运行 main.py 的 pythonw.exe 进程,进程ID为 %%i
    set pid=%%i
    echo %pid%
    taskkill /F /PID %pid%
    echo 进程 %%i 已终止。
)


set PATH=%PATH%;C:\ProgramData\anaconda3\Scripts;C:\ProgramData\anaconda3\Library\bin
conda activate base && cd /d "%~dp0" && start "" pythonw main.py
echo ok

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值