繁体   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