2017-06-14 20 views
0

我在企業UNIX SUSE電腦我的用戶目錄(沒有sudo的特權)有一個自行安裝的Python:與家當路徑可執行.py文件

which python <user>/bin/python/Python-3.6.1/python

我有一個運行(chmod 777)sample.py文件與該線在該文件的頂部:

#!<user>/bin/python/Python-3.6.1/python

我可以執行該文件是這樣的:

python sample.py

但是當我通過自身運行它,我得到一個錯誤:

/full/path/sample.py /full/path/sample.py: Command not found

我不知道爲什麼它不工作。由於文件是可執行文件,python路徑是正確的,並且如果我在前面放置python命令,該文件會執行,所以我被解散爲可能會出錯的文件。我錯過了什麼?

編輯: 我試圖把這個在文件的頂部:

#!/usr/bin/env python

現在,我得到這個錯誤:

: No such file or directory

我嘗試這樣做,以確保我的ENV是正確的

which env /usr/bin/env

EDIT2: 是的,我可以用家當命令像這樣運行腳本罰款: <user>/bin/python/Python-3.6.1/python /full/path/sample.py

+0

不是問題的解決方案,但'chmod 777'(幾乎)從來都不是正確的做法。只設置您實際需要的權限。在這種情況下,最有可能的是'755'(你可以讀/寫/執行,其他人可以讀/執行) – viraptor

+0

你是否檢查過可以使用你提供的路徑運行腳本?而不是'python sample.py',你可以運行'/ the/full/path/from/shbang sample.py'嗎?如果是,那麼問題可能與第一行的格式有關。如果不是,那麼你要麼指向錯誤的python二進制文件,要麼python安裝被破壞。 – viraptor

+0

@viraptor,是的,我可以使用shebang的路徑運行腳本,我也將它添加到上面的編輯中。格式是正確的,我仔細檢查,並且python安裝不能被破壞,因爲我可以使用'python'命令和'/ path/from/shebang /'命令運行腳本。 – rrlamichhane

回答

1

你的文件有DOS行尾(CR + LF)。如果您運行python sample.py,它將正常工作,但如果運行./sample.py則不起作用。重新編碼文件,使其具有Unix行尾(每行末尾都有純LF)。

+0

你是一個救星。而已。可惡!我運行了'dos2unix sample.py',現在運行正常。非常感謝! – rrlamichhane

0

嘗試使用#!/usr/bin/env pythonthis post描述。讓操作系統完成這項工作。

+0

感謝您的回覆。我嘗試過,但它不起作用。請看我的編輯更多細節。 – rrlamichhane