我有一个Python文件是在Windows下开发的,所以它自然有CR LF行尾。我用#!/usr/bin/env python3
在上面添加了Python shebang,使它可以在Linux下直接执行。加载器打印出一条错误消息:
/usr/bin/env: ‘python3\r’: No such file or directory
我知道我可以简单地使用python3 x.py
执行该文件,但出于各种原因,我希望在第一行使用#!
。
我目前的解决方案是将第一行放在一个单独的文件中,该文件具有Unix行尾,并使用cat prefix.py x.py > y.py
生成一个具有混合行尾的可执行文件。但我更希望第一行由ViM以不同的方式处理。这可能吗?
如果我编辑y.py
,除了第一行之外,我在每一行上都得到一个^M
,因为这是一个混合行尾的文件,所以对我来说,一个解决方案是不显示^M
,并在所有地方使用DOS行尾,但在第一行上保持UNIX行尾。
1条答案
按热度按时间ozxc1zmp1#
简单而明显的解决方案是在python脚本上运行dos 2unix,并去掉隐藏的\r字符。
黑客的解决方案是创建一个符号链接,字面上命名为/usr/local/bin/python^M,它指向/usr/local/bin/python,这将允许你在将来运行所有这样的python脚本,而不必先在它们上运行dos 2unix。
来源:https://natanyellin.com/posts/shebang-python-bad-interpreter-m/