在 Windows 上通过批处理调度 Python 脚本(使用 Anaconda)

Posted

技术标签:

【中文标题】在 Windows 上通过批处理调度 Python 脚本(使用 Anaconda)【英文标题】:Schedule a Python script via batch on windows (using Anaconda) 【发布时间】:2018-03-08 08:25:09 【问题描述】:

我有一个每天运行的脚本并想为它制定一个时间表,我已经尝试了一个批处理文件:

start C:\Users\name\Miniconda3\python.exe C:\script.py

我可以在其中运行一些基本的python命令,问题是我的实际脚本使用了一些随Anaconda一起安装的库,我无法在脚本中使用它们,因为Anaconda不会加载。

我在 Windows 上工作,但找不到启动 Anaconda 并每天在那里自动运行我的脚本的方法。

【问题讨论】:

【参考方案1】:

在直接通过环境调用 python 时我会小心一点,因为永远不知道激活函数的内部结构是否发生了变化。

我只是在使用基本的 bat 脚本来帮助我。

SET log_file=%cd%\logfile.txt
call C:\Anaconda3\Scripts\activate.bat
cd \script_directory
python script.py arg1 arg2 > %log_file%

此脚本会在运行 bat 的任何位置保存日志文件,通过激活(在本例中为标准)调用正确的环境,并将所有标准输出引导到日志文件中以供进一步调查。

然后只需将您的 Windows 任务计划程序指向脚本并设置您希望日志文件出现的主目录。

【讨论】:

【参考方案2】:

我建议使用您需要的软件包创建一个 Anaconda 环境,然后使用该环境中的 python 来运行您的脚本。了解 Anaconda 环境 here

例如...

假设您创建了一个名为 cristians_env 的环境

conda create --name cristians_env

然后你安装你需要的包

conda install pandas

然后,您只需从批处理脚本中执行此操作(假设您使用 Anaconda 2)

start C:\Users\name\Anaconda2\envs\cristians_env\bin\python C:\script.py

瞧!您正在使用批处理脚本中的 anaconda 环境!

【讨论】:

谢谢!我刚刚找到了另一种方法,但你的方法似乎更好! 非常感谢你发布这个,让我头疼 但是这样一些模块可能无法加载,例如我正在使用请求,我收到错误"Can't connect to HTTPS URL because the SSL module is not available.",我必须调用.....\activate.bat文件之前提到的@HarshaLimaye【参考方案3】:

几天前我遇到了类似的问题。 我发现 anaconda prompt 在运行位于 anaconda 中的 'activate.bat' 脚本后,只不过是您的 通常的 cmd 提示符 “脚本”文件夹。 所以要在 anaconda 中运行你的 python 脚本,你需要做的就是在一个批处理文件中写两行。 (打开记事本并写下下面提到的行。使用 .bat 扩展名保存文件)

    调用 C:\....anaconda3\Scripts\activate.bat 的路径 调用 python C:\path 到你的脚本\Script.py

然后您安排此批处理文件按您的意愿运行,它将毫无问题地运行。

【讨论】:

【参考方案4】:

找到了解决方案,我复制了“C:\Users\yo\Miniconda3\Scripts”中的“activate.bat”文件并将其重命名为 schedule.bat 并在末尾添加了我的脚本(复制粘贴)文件。

然后我可以在 windows 上安排一个每天执行 schedule.bat 的任务

【讨论】:

以上是关于在 Windows 上通过批处理调度 Python 脚本(使用 Anaconda)的主要内容,如果未能解决你的问题,请参考以下文章

从 Windows 任务调度程序在虚拟环境中运行 python 脚本

在windows处理器调度的过程中,线程的哪些状态可以转换到就绪状态

Windows 2008 服务器任务调度程序不运行 .bat 批处理作业 [关闭]

java能利用多核cpu吗

如何在Windows上使用Python for .NET进行多处理?

Python 使用任务调度程序自动登录 Windows