[英]Executing python program
我已經在網上尋找答案了很長一段時間,但這讓我很頭疼:
我正在使用Ubuntu 12.04,我想從終端執行Python腳本而不使用完整路徑。 所以我將/ home / kyril / python / scripts /添加到PATH變量中,將以下內容放入./bashrc:
kyrilpathvariable="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/kyril/Python/scripts/:/home/kyril/Bash/scripts"
if [ "$kyrilpathvariable" = "$PATH" ]; then
echo PATH already exported
else
PATH=$PATH:/home/kyril/Python/scripts/
PATH=$PATH:/home/kyril/Bash/scripts/
export PATH
fi
(我知道if子句不是必需的,但如果我輸入exec bash,我不想在我的PATH中有兩次。)
現在的問題是:這完全適用於我的Bash腳本,所以在通過chmod使它們可執行后,我只需輸入$ script.sh
執行。 但是,如果我鍵入$ python3 script.py
,則會引發以下錯誤: python3: can't open file 'script.py': [Errno 2] No such file or directory
如果我輸入腳本的完整路徑,它的工作原理。 有誰知道我做錯了什么? 我是否必須將目錄添加到PYTHONPATH? (據我所知,這只對導入模塊有幫助)。
多謝你們!
當直接調用python3
,python運行你告訴它的腳本文件,而不使用$PATH
來查找它。 PYTHONPATH
無關緊要 - 用於搜索Python模塊。
我猜你在運行script.py
時遇到錯誤的解釋器問題。 我不知道你的腳本的第一行是什么,但它應該是這樣的:
#!/usr/bin/env python3
或者如果您需要更精細的控制:
#!/usr/bin/env python3.2
對於Python 2腳本:
#!/usr/bin/env python2
要么:
#!/usr/bin/env python2.7
在嘗試使用它們之前,應檢查系統上是否存在這些可執行文件。
我猜想當python搜索輸入文件時會忽略路徑變量。 Python開始在當前目錄中搜索“script.py”,不知道是否為該文件聲明了路徑變量,因此無法找到它。
不幸的是,我不確定如何解決它,但也許更有經驗的變量可以啟發我們?
python3 $(type -P script.py)
告訴Bash在PATH
查找可執行文件並提供其位置和名稱。
例如:
$ type -P script.py
/usr/local/bin/script.py
為避免路徑中出現重復條目,您可以執行以下操作:
for dir in Python Bash; do
dir_to_add="$HOME/$dir/scripts"
case ":$PATH:" in
*:"$dir_to_add":*) ;; # path already contains dir, do nothing
*) PATH+=":$dir_to_add" ;;
esac
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.