2014-05-05 82 views
0

我是Python新手,一般編程。 我試圖強制我的腳本使用python.org中使用python安裝程序安裝的Python3.4。Python shebang不強制其他版本[Mac]

我的腳本有這個。

#!/usr/local/bin/python3.4 
import sys 
print(sys.version) 
print("Hello, World!") 

終端返回此:

$ python pyscript.py 
2.7.5 (default, Aug 25 2013, 00:04:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] 
Hello, World! 

的家當路徑是正確的,根據「這python3.4」

+3

運行它直接使用'./pyscript.py',或者做'python3.4 pyscript.py'。 –

+0

shebang在你直接運行腳本時使用,然後你甚至可以將腳本重命名爲'pyscript'(沒有擴展名'.py'):) – furas

回答

1

家當只有當你運行你的腳本直接使用命令這樣用

$ ./pyscript.py 

當你從命令行解釋python的時候,shell並沒有使用lt shebang line。它只是運行它在命令行中找到的第一個python可執行文件。

要更改默認的python可執行文件,請調整您的路徑。或者更好的使用python虛擬環境。有關虛擬環境的更多信息是here

+1

謝謝。我試過./pyscript.py,但終端返回權限被拒絕,即使我是管理員,文件保存在我的文檔文件夾中。 我更喜歡使用終端代替PVM,因爲我必須使用屏幕閱讀器(我是視覺受損的)。 – cmblake

+2

@cmblake你必須設置可執行位,即使root沒有標記'x'位也不能執行。 'chmod u + x pyscript.py' – roippi

3

通過在腳本上調用python,您在路徑中使用了python。正如評論建議在設置執行位後直接運行文件。

1

根據您的安裝,蟒蛇可以安裝在的地方在OS X

衆多沒有任何其它附加的變化,你很可能是位於/usr/bin/python蟒蛇。這可以通過鍵入which python

~ $ which python 
/usr/bin/python 

注意的是,雖然/usr/local/bin/python3.4可能是正確的路徑到Python 3.4,當你鍵入python script.py你是不是調用你找到你這麼做的時候which python3.4命令來驗證。

爲了解決這個問題,你可以做一個:

  • 直接調用腳本。鍵入script.py(帶有可執行位),而不是python script.py。您可能需要將腳本的權限更改爲chmod u+x script.py
  • /usr/bin/python中的版本更改爲所需的版本。請注意,這可能是在其他事情非常危險期待底座安裝的2.7.5 Python可以成爲很不高興
  • 更改$ PATH把/usr/local/bin//usr/bin前,有蟒蛇在/usr/local/bin/python點到3.4版本。
0

的家當路徑僅由OS使用時,你的可執行文件,直接運行它,就像這樣:

chmod 755 pyscript.py 
./pyscript.py 

對於Python的家當僅僅是一個註釋。即使在CLI上直接調用解釋器時,強制執行該操作的唯一方法是比較版本,以及是否使用os.execv或更低版本重新啓動該版本。像這樣的東西應該做的(雖然不測試):

#!/usr/local/bin/python3.4 
import sys 
import os 
if (sys.hexversion < 0x3040000): 
    sys.argv.insert(0, '/usr/local/bin/python3.4') 
    os.execv(sys.argv[0], sys.argv) 

print(sys.version) 
print("Hello, World!") 

你可能想使用env的家當,避免指定路徑,避免硬編碼在Python代碼太路...