如何修复上次运行结果(0x2331)错误时运行Python脚本与Windows任务

u3r8eeie  于 4个月前  发布在  Python
关注(0)|答案(1)|浏览(70)

我试图运行一个python脚本与Windows任务,但Last Run Result是0x 2331出于某种原因。这个错误似乎表明一个windows path issue

重复

我正在使用Windows 10 Pro(64位),我的Python可执行文件的绝对路径是C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe

我的python脚本

我的python脚本的绝对路径是C:\Users\user\.spyder-py3\AutoScript\test.py。它只是将当前时间写入一个文本文件。如果文本文件不存在,它会创建一个文本文件:

# -*- coding: utf-8 -*-
import datetime

with open('C:/Users/user/.spyder-py3/AutoScript/readme.txt', 'a+') as f:
    f.write(f'{datetime.datetime.now()}\n')

字符串
如果我用Python 3.9.7在Spyder 3 IDE(Anaconda 3)中正常运行脚本,readme.txt会被创建而没有错误,文件内容也和预期的一样。因此,脚本没有问题。

使用任务模板创建任务

我已经在任务管理器中包含了设置的截图。点击图片可以以高分辨率查看它们。
x1c 0d1x的数据



结果

当我在任务管理器上运行任务,然后刷新任务管理器时,我的任务的“上次运行结果”是(0x2331)

What I tried

我试着在任务栏中摆弄不同的设置,但没有成功。前3列表示设置细节,最后一列包含获得的结果。
| 程序/脚本|添加参数:|开始于:|上次运行结果|
| --|--|--|--|
| C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe |C:\Users\user.spyder-py3\AutoScript\test.py||(0x2331)|
| “C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe”|“C:\Users\user.spyder-py3\AutoScript\test.py”||(0x2331)|
| C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe |test.py|C:\Users\user.spyder-py3\AutoScript|(0x2331)|
| C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe |“网址:test.py“|C:\Users\user.spyder-py3\AutoScript|(0x2331)|
| “C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe”|“网址:test.py“|“C:\Users\user.spyder-py3\AutoScript”|目录名无效(x8007010 B)|
| “C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe”|“网址:test.py“|C:\Users\user.spyder-py3\AutoScript|(0x2331)|

批量文件

使用这个post as reference,我还尝试使用executePy.bat文件放置。它被放置在与test.py相同的文件夹中。
executePy.bat

@echo off
"C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe" "test.py"


任务栏中的设置如下:
| 程序/脚本|添加参数:|开始于:|上次运行结果|
| --|--|--|--|
| C:\Users\user.spyder-py3\AutoScript\executePy.bat |||(0x2331)|
以上修改都没有解决我的问题。任何帮助都很感激。谢谢。

moiiocjp

moiiocjp1#

问题

当我在命令提示符下输入where python时,我得到

C:\Users\user\anaconda3\python.exe
C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe

字符串
但是,当我在命令提示符下输入python时,Microsoft Store打开,并要求我下载Python 3.10解释器。
命令提示符无法识别我当前的Python解释器。

解决方案

为了解决这个问题,我不得不在windows中将python添加到我的环境变量中。

配置环境变量

由于某些原因,C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe的第一个python解释器没有解决这个问题,所以我决定使用Anaconda的python解释器。
this tutorial之后,我将C:\Users\user\anaconda3\Scripts\C:\Users\user\anaconda3\添加到系统变量部分的Path变量中。
现在,当我在命令提示符下输入python时,我得到:

Python 3.9.7 (default, Sep 16 2021, 16:59:28) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32


还有一个关于未激活的conda环境的警告。我暂时忽略了这个警告。

创建批文件

使用这个post as reference,我在与脚本test.py相同的文件夹中创建了一个executePy.bat文件。executePy.bat包含:

@ECHO OFF 
python C:\Users\user\.spyder-py3\AutoScript\test.py


C:\Users\user\.spyder-py3\AutoScript\test.py是我想要执行的python脚本的绝对路径。

注意事项

为了简单起见,我没有激活任何anaconda环境。因此,如果我试图在脚本中导入externallibrary,任务将无法成功运行。解决方案是首先在anaconda上激活一个具有所需库的环境。
有关激活anaconda环境的更多信息,请访问:

在任务调度器上配置任务

x1c 0d1x的数据
| 程序/脚本|添加参数:|开始于:|
| --|--|--|
| C:\Users\user.spyder-py3\AutoScript\executePy.bat |||

结果

上次运行结果:The operation completed successfully (0x0)
如果在正确配置环境变量后仍然需要帮助,这些帖子可能会很有用:

相关问题