簡體   English   中英

執行python程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM