要在Linux和bash上使Python脚本可执行,可以使用shebang
#! /usr/bin/env python
作为脚本的第一行。如果这一行恰好以Windows风格的换行符\ r \ n(回车符换行)结束,而不是Unix样式的换行符\ n,则bash将无法通过Python解释器运行脚本。 / p>
我正在使用Python进行跨平台开发。当我在Windows中工作时,自然换行是\ r \ n。当我在Linux中工作时,自然换行是\ n。鉴于我使用Mercurial进行版本控制,在包含shebang的脚本文件中强制使用\ n换行符的最佳方法是什么?
答案 0 :(得分:4)
常见的方法不是自己生成外包装脚本,而是在setup.py
中指定它们,并在包安装过程中生成它们。
如果您执行以下操作:
setup(
entry_points = {
"console_scripts": [
"script_name": "your.module.name:main",
],
}
)
...然后,在安装时,将生成并安装名为script_name
的包装器,并进行适当配置以在当前平台(shebang line和all)上运行。这使得使用中的行尾字符没有实际意义。
答案 1 :(得分:1)
此问题对于在非本机平台上开发的所有脚本都很常见,而不仅仅是Python。大多数SCM具有自动行结束转换功能。 Mercurial可以做到这一点,但它不是默认值。请参阅EOL Extension。
答案 2 :(得分:0)
您可能需要检查EolExtension。
使用EolExtension,您可以为您的存储库强制执行某一行结尾。提交不同行结尾的文件会自动转换。