为python脚本设置默认解释器不起作用



这是我的环境

> lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: Scientific
Description:    Scientific Linux release 6.8 (Carbon)
Release:        6.8
Codename:       Carbon
> /home/ktew/python/bin/python --version
Python 2.7.18

我在python脚本中添加了以下行作为第一行。

#!/home/ktew/python/bin/python

python脚本是可执行的。

-rwxrwxrwx 1 ktew ktew   12753 Sep 23 10:35 compare_trims_by_version_5.py*

这个命令行运行良好。

/home/ktew/python/bin/python compare_trims_by_version_5.py

然而,当我运行命令时没有找到它。

> ./compare_trims_by_version_5.py
./compare_trims_by_version_5.py: Command not found.

我在中找到了答案https://stackoverflow.com/a/30127747/5057185.我用windows编辑器编写了这个脚本,它包含windows行结尾(CR/LF(。我使用了dos2unix命令来修复行尾。

总结:

  1. 在脚本的第一行添加shebang。#!/home/ktew/python/bin/python
  2. 请确保脚本是可执行的。chmod +x script
  3. 如果目录不在PATH中,请使用./script.py而不是script.py
  4. 确保线路末端正确(LF而不是CR/LF(。使用dos2unix进行修复

错误消息看起来像是系统试图作为shell脚本运行,而不是使用Python解释器(ref:Python错误:找不到命令(。在这种情况下,Python解释器似乎没有什么不合适的地方。参考的stackoverflow页面建议使用#!/usr/bin/env python,建议您也尝试一下。

相关内容

最新更新