gpt4 book ai didi

python - 从 Bash 文件运行 Python 脚本导致导入错误

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:31 24 4
gpt4 key购买 nike

我编写了一个简单的 bash 脚本来运行我用 Python 制作的游戏。但是,当我这样做时,在尝试导入自定义模块时会出现导入错误。

Traceback (most recent call last):
File "/home/user/Projects/Test/game.py", line 7, in <module>
import boot, splash, menu, game, player, options
ImportError: No module named 'boot'

我检查了包含模块的文件夹的权限,它们可以访问。如果我只是在终端中运行 game.py 为:

python3.4 game.py

然后一切正常。没有导入错误或任何东西。就在我将它作为 Bash 文件运行时。作为引用,这是我正在使用的 Bash 文件:

#!/bin/bash
STRING="Launching game..."
PYTHON="/usr/bin/python3.4"
GAME="/home/user/Projects/Test/game.py"
echo $STRING
$PYTHON "$GAME"

编辑:关于 Bash 文件和 Python 文件的位置,这似乎是一个绝对/相对路径问题。运行 Bash 文件,因为 Python 文件使用相对路径,所以它不知道自定义模块的源在哪里。

最佳答案

如果您担心相对绝对 路径(听起来确实可能是这里的潜在原因),我建议您按照下面的代码进行操作以确保您也在 bash 脚本中使用相对路径。

本质上,您将 cwd 切换到包含游戏文件的目录,但利用 pushdpopd 来确保切换不会不影响其他任何事情。重定向到 /dev/null 是为了抑制来自 pushd/popd 的输出,这通常只是脚本情况下的额外噪音。

#!/bin/bash
STRING="Launching game..."
PYTHON="/usr/bin/python3.4"
GAME_ROOT="/home/user/Projects/Test"
GAME="game.py"

pushd . > /dev/null 2>&1
cd $GAME_ROOT

echo $STRING
$PYTHON "$GAME"

popd > /dev/null 2>&1

关于python - 从 Bash 文件运行 Python 脚本导致导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24727582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com