2015-10-27 29 views
2

我一直在閱讀有關python的內容,在使用shebang命令行時我有一些疑問。當我運行:當從控制檯運行python腳本py和python的區別是什麼python

py file_name.py 

它執行使用我的家當線表明了Python版本的腳本,但是當我執行,

python file_name.py 

Python中的最後一個版本是用的,而不是我已經指定了一個。我想知道從命令行運行腳本時使用pythonpy的區別。我的shebang線是#! python3.4

是否使用pythonpy有不同的含義或最終都相同?

+1

'whereis py | xargs ls -a' – Cyrbil

+1

'python scriptname.py'表示*「使用'python'啓動」*的解釋器運行'scriptname.py'。我從來沒有使用'py',但是另一種選擇是設置一個顯式的shebang(例如'#!/ usr/bin/env python3')並且使腳本可執行,然後你可以直接運行它。 – jonrsharpe

回答

2

(這個答案假定您使用的是Windows,但我相信它主要是適用於其他操作系統也模的一些細節)

「python.exe」是實際的解釋。你的系統上每個版本的Python都有一個。在命令行上運行「python」時執行哪個版本取決於您的環境變量PATH以及您當前的工作目錄。

「py.exe」是Python Launcher。你可能只有一個,即使你有多個Python安裝。礦在C:\Windows。它會查看腳本,決定使用哪個版本,並將實際執行委託給適當的解釋器。

1

要查看Python版本都在使用每個命令,運行這兩個命令:

python -c "import sys;print(sys.version)" 
py -c "import sys;print(sys.version)" 

如果同時顯示相同的版本,那麼你的系統上他們都是目前相同。 但是,其中一個或另一個可能會更新。我個人建議不要依賴,並在您的腳本中明確調用您想要的Python版本。

+0

我已經使用這段代碼來檢查運行的版本,這就是我提出這個問題的原因。當我使用'py'時,我使用了指定的版本,但在使用'python'時沒有使用。我想知道兩者之間的小差異,儘管乍一看似乎都是一樣的。 – lmiguelvargasf

+0

您也可以從命令行執行'python --version'。 –

+1

@lmiguelvargasf:我已經在編輯中解決了您的評論。 – dotancohen