[英]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.