2017-07-07 98 views
-1

我想在linux中運行python腳本而不顯式調用python。 我的目標是讓$ myscript.py運行我的腳本。目前呼籲$ python myscript.py工程,但我希望不必輸入額外的命令易於使用。我將shebang行添加到腳本的第一行以獲得正確的python調用。我已經嘗試了以下兩行,但都沒有爲我工作。權限被拒絕在Linux中使用shebang行運行python腳本

#!/usr/bin/env python2.7 
#!/usr/local/bin/python2.7 

的問題是,我得到了以下行爲

$ python2.7 myscript.py # This will run 

$ myscript.py   # This is the error 
$ ./myscript.py   # This will also error 
: Permission denied  # Error message 

當我在文件上做ls -ltr我對腳本執行權限和可執行

-rwxrwxr-x 1 uname users 3544 Jul 7 08:46 myscript.py 
-rwxr-xr-x 1 root root 6231413 Jul 7 00:57 /usr/local/bin/python2.7 

我也可以在命令行中通過鍵入寫入到其中的shebang行中的內容來調用python。

/usr/bin/env python2.7 
/usr/local/bin/python2.7 

都在終端運行python。

我已經遇到了下面的stackoverflow問題,似乎沒有人回答爲什麼這個問題發生在我身上。

bash permission denied for python

Python script: problems with shebang line (unix)

+3

試過'。/ myscript.py'? –

+1

當你執行'ls -l/usr/local/bin/python2.7'時你會看到什麼? – Jack

+0

「權限被拒絕」真的很奇怪。通常情況下'PATH'不包含'.',在這種情況下,shell會說出類似「未找到命令」的內容。你確定劇本的名字嗎?你的用戶名字面上是「uname」,還是僅僅是匿名?你正在運行哪個版本的Bash? – l0b0

回答

0

確保在Linux上運行時,使用LF行結束沒有CRLF行結束!謝謝@jwodder的建議。

我使用sublimetext在windows中編輯我的文件並在Linux機器上運行文件。我改變了崇高的喜好使用unix行尾(LF),但我已經寫在DOS結尾(CRLF)的文件。我認爲它會替換我的線路結局。我的假設是錯誤的。我將它們全部轉換爲LF,腳本按預期運行。