簡體   English   中英

從shell調用python腳本不執行

[英]python script doesn't execute when calling it from shell

我在文件foo有一個python 3程序,該文件具有執行權限,腳本的第一行是

#!/usr/bin/python3

當我直接從python運行文件時,即:

/usr/bin/python3 foo 3 boo

一切運行正常,但是當我嘗試通過調用文件名來運行程序時,我得到:

foo 3 boo
foo: Command not found.

即使指定腳本的相對路徑或完整路徑,我也會得到相同的響應。

./foo 3 boo
./foo: Command not found.

/full/path/to/the/file/foo 3 boo
/full/path/to/the/file/foo: Command not found.

請求的更多信息:

head -2 foo
#!/usr/bin/python3

which python3
/usr/bin/python3

從tcsh工作,問題出在哪里?

我正在通過ssh在遠程大學計算機上工作,系統管理員可能會以某種方式阻止這種情況嗎?

您需要指定腳本的絕對路徑。 嘗試

./foo 3 boo

與腳本位於同一目錄中。 否則,shell只會在您的PATH查找不存在的名為foo東西。

您必須提供文件的路徑

./foo

如果僅調用“ foo”,則外殼程序將在環境變量$ PATH中查找包含“ foo”二進制文件的文件夾,而他將找不到它。

我正在使用python3,僅是一個示例。

只是一個測試腳本..

$ cat test.py
#!/python/v3.6.1/bin/python3
import os
print(os.system("ls"))

$ which python3
/python/v3.6.1/bin/python3

允許將其可執行。.我懷疑腳本foo是否在您的情況下可執行。

$ chmod +x test.py

測試運行..

$ ./test.py
a.py     Backup     File_Write_Method  NWK-old              Python_aritsTest  Python_Ftp   Python_Mail     Python_Primer  test.py
argpass  BASH       Network_DeOps      Python-3.6.3         Python_Dump       Python_FTP   Python_Panda    readme_python  tmp
awk.sh   dnspython  nslookup           Python-3.6.3.tar.xz  Python_excep      Python_ldap  Python_Parsers  Regular_Expr   tt.csv
0

這可能是外殼問題,因為我復制了tcsh外殼&無法運行。

 $ tcsh $ ./test ./test: Command not found. 

但是它運行,當我像下面那樣運行時..

tcsh -c ./test.py

假設您的腳本是可執行文件,並且/ usr / bin / python3中有python3。 我認為您正在嘗試從安裝有noexec參數的分區運行腳本,以檢查是否應運行該問題:

mount | grep <partition> | grep noexec

如果我沒錯,您可以使用exec選項掛載分區或將腳本移動到其他位置。

暫無
暫無

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

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