从Shell文件启动Python脚本失败,但从终端启动可以运行

4

如果我从终端启动Google Code上传Python脚本,它能够正常工作,但是当我在Bourne Shell脚本文件中使用下面的代码启动时,它会失败并显示错误"close failed in file object destructor: Error in sys.excepthook: Original exception was:"。

#!/bin/sh
BUILD_FOLDER="/Users/James/Documents/Xcode Projects/Uber Sweep - Mac/build/Release & Package"

if [ -f "$BUILD_FOLDER/Uber Sweep (64 bit).zip" ]; then
python /Users/James/Scripts/Google\ Code\ Upload.py -s "Uber Sweep - Mac OS X (64 bit)" -p "uber-sweep" -u "EXCLUDED" -l "Featured,Type-Archive,OpSys-OSX" "$BUILD_FOLDER/Uber Sweep (64 bit).zip" | echo
fi

为什么会这样呢?感谢您的帮助,jrtc27。

echo 不接受任何来自标准输入的内容,因此它什么也不做,只输出一个空行。尝试指定 python 的完整路径。脚本的 PATH 可能与您的交互式 shell 不同。您应该能够引用 Python 脚本的名称并避免笨拙的空格转义。 - Dennis Williamson
这是完整的异常信息吗?如果不是,请提供完整的异常信息。同时,请提供代码或链接到“Google\ Code\ Upload.py”。还有,你为什么要将Python脚本输送给“echo”呢? - Lesmana
这就是我收到的完整错误信息,不幸的是。我将其导入到 echo 中以便查看脚本的结果。Google Code Upload.pyGoogle 的官方脚本 的未修改版本 - 请注意,我使用的是 r190 版本(发布时的最新版本)。 - jrtc27
我停止了将其传输到回显,现在它可以工作了。感谢您的帮助。@Dennis,如果您将您的评论发布为答案(您首先发表了评论),我会将其标记为解决方案。 - jrtc27
1个回答

1

echo 不接受来自 stdin 的任何内容,因此它除了输出一个空行之外什么也不做。脚本的输出应该无需进行任何操作即可显示。

尝试指定 python 的完整路径。脚本的 PATH 可能与您的交互式 shell 不同。

您应该能够引用 Python 脚本的名称并避免笨拙的空格转义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接