在本地,因为定时自动运行python的代码,在bat文件中使用命令行语句运行Anaconda Prompt,并执行python代码。
bat文件的内容如下:
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
start cmd /c "cd/d C:\地址&&call 地址+Anaconda3\Scripts\activate.bat&&call activate ###&&call e:&&call cd E:\地址\&&call python E:\地址\name.py"
代码的前三行是获得管理员权限,最后一行是在命令行上执行程序。/c表示执行完程序后关闭命令行,如何不想关闭,可以用/k;“”中的内容是要在命令行上执行的内容;cd/d C:\地址-进入指定目录;call 地址+Anaconda3\Scripts\activate.bat-在当前命令行界面上打开Anaconda Prompt;call activate ###-激活相应的python环境(使用conda info --envs可以查看本地的python环境);call e:/call cd E:\地址-进入到py文件对应的地址;call python E:\地址\name.py-执行name.py;&&连接在需要带命令行运行的多行语句。
在本地,name.py还依赖于相同地址下的自己编写的*.py文件。如果没有这种依赖,直接python运行地址\py文件即可,并不需要先用命令行进入到相应位置。
自动运行python程序最好使用pyinstaller打包成exe文件,这样将相应环境也打包在exe内,可用在其他机器上运行。在本地,pyinstaller打包之后的exe不能正常运行,原因在查,因此采样了本文的这种方法自动运行。