我寫了一個簡單的bash腳本來運行我在Python中製作的遊戲。但是,當我這樣做時,它會在嘗試導入自定義模塊時給我一個導入錯誤。從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"
編輯:這似乎是一個絕對/相對路徑問題,因爲到猛砸文件和Python的文件。運行Bash文件,因爲Python文件使用相對路徑,所以它不知道自定義模塊的來源。
當你運行python3.4解釋器和bash腳本時,* cwd *是不同的嗎? – khampson
'哪個python3.4'給你'/ usr/bin/python3.4'? – chrisaycock
該目錄似乎是問題所在。導入功能使用相對目錄,而不是完整路徑。當我運行python3.4 game.py時,我通常從它所在的目錄中執行它。 – Gramps