簡體   English   中英

Ubuntu Python shebang線不起作用

[英]Ubuntu Python shebang line not working

無法讓 shebang 行在 Ubuntu 中為 python 腳本工作。 我每次只得到一個命令未找到錯誤。

測試.py

#!/usr/bin/env python

print ('!')

:which python
/usr/bin/python

在shebang中玩了python的不同位置,但沒有運氣,包括哪個python提供的東西。 有關如何解決此問題的任何提示?

謝謝

如果您嘗試將命令運行為

$ test.py

該錯誤可能與shebang沒有任何關系。 相反, test.py 所在的目錄不在您的PATH中。 嘗試

$ ./test.py

繞過PATH查找。

(這是為了確保腳本本身是可執行的。)

在 python文檔頁面上它說:

要在 Unix 上輕松使用 Python 腳本,您需要使它們可執行,例如

$ chmod +x 腳本並在腳本頂部放置適當的 Shebang 行。 一個好的選擇通常是

#!/usr/bin/env python 在整個 PATH 中搜索 Python 解釋器。 但是,某些 Unices 可能沒有 env 命令,因此您可能需要硬編碼 /usr/bin/python 作為解釋器路徑。

我不知道這是否適用於你。

除了使用前面的點執行腳本或使其可執行之外,可能還有另一個問題:

如果您嘗試使用用 windows 編輯器編寫的腳本,它可能包含 windows 行尾。 刪除這些可以使 shebang 再次工作。

要刪除此類行尾,請參閱How to convert Windows end of line in Unix end of line (CR/LF to LF)例如。

另請參閱我在其他答案中對失敗的 shebang 評估的一般評論。

確保“第一行”是shebang。 不要在文件的開頭給出任何換行符。 開頭沒有換行符

這可能是由於內核配置錯誤。 查看內核的配置選項,並檢查是否設置了CONFIG_BINFMT_SCRIPT

zcat /proc/config.gz | grep CONFIG_BINFMT_SCRIPT

如果此命令的輸出是CONFIG_BINFMT_SCRIPT=y以外的任何內容,這意味着您的內核將不允許您使用 shebangs。 您將需要獲得一個新內核或使用CONFIG_BINFMT_SCRIPT=y重新編譯當前內核。

您還可以通過鍵入來檢查以 gitbash/pycharm 終端結尾的行,

貓 .git 屬性

這將列出設置,對於 linux 設置粘貼此 *.sh 文本 eol=lf

如果這不起作用,那么最好創建一個新分支並刪除現有文件並創建新文件。

這對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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