首页 > 编程语言 >【Batch Job】Batch Job中执行一段Python代码,遇见Failure Exit Code

【Batch Job】Batch Job中执行一段Python代码,遇见Failure Exit Code

时间:2024-04-07 20:11:07浏览次数:30  
标签:__ Code py Batch Job line packages

问题描述

在Azure Batch Job中执行一段Python代码,遇见Failure Exit Code。

print("start mian.py")

if __name__ =="__main__":
    print("__main__")

就算只使用一个简单的 print 方法,也是出现Failure Exit Code错误。

进一步在Batch Job的 stderr 日志中,发现了错误消息:

Traceback (most recent call last):
  File "site-packages\PyInstaller\loader\rthooks\pyi_rth_win32comgenpy.py", line
49, in <module>
  File "c:\hostedtoolcache\windows\python\3.7.9\x64\lib\site-packages\PyInstalle
r\loader\pyimod03_importers.py", line 623, in exec_module
  File "site-packages\win32com\__init__.py", line 8, in <module>
  File "c:\hostedtoolcache\windows\python\3.7.9\x64\lib\site-packages\PyInstalle
r\loader\pyimod03_importers.py", line 623, in exec_module
  File "site-packages\pythoncom.py", line 2, in <module>
  File "c:\hostedtoolcache\windows\python\3.7.9\x64\lib\site-packages\PyInstalle
r\loader\pyimod03_importers.py", line 623, in exec_module
  File "site-packages\win32\lib\pywintypes.py", line 126, in <module>
  File "site-packages\win32\lib\pywintypes.py", line 116, in __import_pywin32_sy
stem_module__
ImportError: DLL load failed: The specified module could not be found.
[2504] Failed to execute script pyi_rth_win32comgenpy

问题解答

首先,出现 Failure Exit Code 表示Batch Job已经开始执行,但是在运行脚本或者执行文件中,出现了异常导致Job退出 Exit with 1 (正常的退出code 为 Exit code 0)。而本次错误中的异常为 “ DLL load failed: The specified module could not be found.”。缺少Python代码的可执行环境。

 

因为Batch Job中执行的文件是通过PyInstaller把python code打包为一个main.exe可执行文件,这样在没有预先安装Python runtime的环境中,也可以执行Python代码。所以需要研究 PyInstaller 在打包时,是否没有包含Python Runtime文件。 

 

参考资料

ImportError: DLL load failed while importing win32api: The specified procedure could not be found. [25960] Failed to execute script pyi_rth_win32comgenpy : https://github.com/mhammond/pywin32/issues/1791

python - Failed to execute script pyi_rth_win32comgenpy after packing with pyinstaller : https://stackoverflow.com/questions/65587443/failed-to-execute-script-pyi-rth-win32comgenpy-after-packing-with-pyinstaller

added --hidden-import "pywin32" to the pyinstaller command, and it worked!

 

标签:__,Code,py,Batch,Job,line,packages
From: https://www.cnblogs.com/lulight/p/18119788

相关文章

  • vscode快捷键(shortcut of vscode)__Visual Studio Code
    移动当前行向上:Alt+↑Moveasinglelineup移动当前行向下:Alt +↓Moveasinglelinedown 复制当前行并将其插入到上一行:Shift+Alt+↑Duplicatethecurrentlineorselectionabovethecurrentline复制当前行并将其插入到下一行:Shift+Alt+↓Duplicatethe......
  • LeetCode题练习与总结:插入区间--57
    一、题目描述示例 1:输入:intervals=[[1,3],[6,9]],newInterval=[2,5]输出:[[1,5],[6,9]]示例2:输入:intervals=[[1,2],[3,5],[6,7],[8,10],[12,16]],newInterval=[4,8]输出:[[1,2],[3,10],[12,16]]解释:这是因为新的区间[4,8]与[3,5],[6,7],[8,10] 重叠。......
  • LeetCode题练习与总结:最后一个单词的长度--58
    一、题目描述给你一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。示例1:输入:s="HelloWorld"输出:5解释:最后一个单词是“World”,长度为5。示例2:输入:s="......
  • 学习SAM过程中mask decoder的信息搜集+个人理解
    SAM主要有图像编码器(imageencoder)、提示编码器(promptencoder)和掩码解码器(maskdecoder)三部分构成,前两部分都比较直观,最后的掩码解码器(maskdecoder)相对来说复杂一些。以下是搜集到的一些帮助理解掩码解码器(maskdecoder)的资料。文字讲解:SAM模型详解-知乎代码:SAM之Mas......
  • TOPCODER时期训练赛小总结
    20240407模拟赛T1TurnOnLamps直接树上dp维护子树内是否有路径在根节点处停止的最小操作数\(O(n)\)维护即可,数据范围纯sbT2XorCards线性基或高斯消元板子,高斯消元比较好想。可以枚举大于等于时前若干位是相同的,然后直接搞出限制消元即可。时间复杂度合理。线性基则非常......
  • 4.6Codeforces Global Round 25
    A题:DualTrigger题意:一个01字符串,每次只能选择俩不相邻的0,把他俩变成1(初始情况都是0)问你最后能不能把这个全0字符串,变成所要求的那样思路:首先分奇偶情况,试了几种情况发现,奇数个1是不可能的而对于偶数,也就只有一种情况是不行的:只有两个1并且最大的连续值就是2。实现:先把奇数......
  • 11.java openCV4.x 入门- Imgcodecs之图像读写
    专栏简介......
  • Leetcode 866. 回文质数
    https://leetcode.cn/problems/prime-palindrome/description/给你一个整数n,返回大于或等于n的最小回文质数。一个整数如果恰好有两个除数:1和它本身,那么它是质数。注意,1不是质数。例如,2、3、5、7、11和13都是质数。一个整数如果从左向右读和从右向左读是相同的,那......
  • vscode选中内容一键转换大小写
    可以通过在VisualStudioCode中配置`keybindings.json`文件来实现通过按键组合进行大小写转换的功能。你可以按照以下步骤操作:1.打开VisualStudioCode。2.点击顶部菜单中的"文件(File)"。3.选择"首选项(Preferences)"。4.选择"键绑定(KeyboardShortcuts)"。5.......
  • 从数组创建二叉树-Leetcode测试用
    Leetcode里和二叉树相关的题目,都是用一个数组表示二叉树的,而这个数组是按照层次优先顺序给出的,连其中的空结点也表示了出来,刚好就是2^N-1个结点,N表示层数。但数组毕竟无法和二叉树一样具有链式结构,无法进行算法测试,因此尝试直接通过这样的数组构建二叉树。通过数组创建这样的二......