如果我正在用Python编写一个用于分发的包,并且我将一些脚本视为scripts
setup.py
中的可执行文件,是否有一种标准方法可以使它们不具有* .py扩展?仅仅制作没有.py扩展名的文件,还是需要额外的东西?是否会从文件名中删除.py,这会破坏与setup.py
/ distutils等Python工具相关的任何功能?感谢。
答案 0 :(得分:2)
只有在您要导入模型AFAICT时才需要.py
扩展名。请记住,pip
,easy_install
等只是可执行文件,顶部是shebang。唯一依赖文件扩展名执行的操作系统是Windows。
答案 1 :(得分:1)
如果您需要Windows兼容性,则不要删除.py
扩展名或使用自动生成适用于系统脚本文件的setuptools'entry_points
选项,例如,安装pip.main()
功能作为脚本,pip
在setup.py
中指定:
entry_points=dict(console_scripts=['pip=pip:main',
'pip-%s=pip:main' % sys.version[:3]]),
即使您不需要Windows兼容性,使用entry_points
也是有意义的,因为它会为您生成指向特定python解释器的正确shebang(其中泛型#! /usr/bin/env python
将是错误的)。
答案 2 :(得分:0)
如果要从命令行执行脚本,.py
扩展名实际上不会为您执行任何操作。该脚本将在两种情况下使用Python解释器执行:
$ python nameofyourscript
#!/usr/bin/env python
。通过在每个脚本中包含一个shebang,您可以将文件命名为任意内容。
如果不执行其中一项操作,脚本将作为正常脚本执行,适用于您正在使用的任何shell。