2024-09-21 17:05:01 发布
网友
如果我用Python编写一个用于分发的包,并将一些脚本放在setup.py的scripts中,有没有一种标准方法可以使它们不具有*.py扩展名?仅仅生成不带.py扩展名的文件就足够了,还是需要额外的东西?从文件名中删除.py是否会破坏与Python工具(如setup.py/distutils等)相关的任何功能?谢谢。在
setup.py
scripts
如果要从命令行执行脚本,.py扩展实际上不会为您做任何事情。脚本将在两种情况下使用Python解释器执行:
.py
$ python nameofyourscript
#!/usr/bin/env python
通过在每个脚本中包含一个shebang,您可以根据需要为文件命名。在
如果不执行这些操作之一,脚本将作为一个普通脚本执行,该脚本适用于您正在使用的任何shell。在
只有当您想要导入模型AFAICT时,.py扩展才是必需的。请记住,pip,easy_install等都是简单的可执行文件,顶部有shebang。唯一依赖文件扩展名来执行的操作系统是Windows。在
pip
easy_install
如果需要与Windows兼容,请不要删除.py扩展名,或者使用setuptools的entry_points选项自动生成适合系统脚本文件,例如,要将pip.main()函数作为脚本安装,pip在setup.py中指定:
entry_points
pip.main()
entry_points=dict(console_scripts=['pip=pip:main', 'pip-%s=pip:main' % sys.version[:3]]),
即使您不需要与Windows兼容,使用entry_points是有意义的,因为它为您生成指向特定python解释器的正确shebang(其中generic #! /usr/bin/env python将是错误的)。在
#! /usr/bin/env python
如果要从命令行执行脚本,
.py
扩展实际上不会为您做任何事情。脚本将在两种情况下使用Python解释器执行:$ python nameofyourscript
#!/usr/bin/env python
。在通过在每个脚本中包含一个shebang,您可以根据需要为文件命名。在
如果不执行这些操作之一,脚本将作为一个普通脚本执行,该脚本适用于您正在使用的任何shell。在
只有当您想要导入模型AFAICT时,
.py
扩展才是必需的。请记住,pip
,easy_install
等都是简单的可执行文件,顶部有shebang。唯一依赖文件扩展名来执行的操作系统是Windows。在如果需要与Windows兼容,请不要删除
.py
扩展名,或者使用setuptools的entry_points
选项自动生成适合系统脚本文件,例如,要将pip.main()
函数作为脚本安装,pip
在setup.py
中指定:即使您不需要与Windows兼容,使用
entry_points
是有意义的,因为它为您生成指向特定python解释器的正确shebang(其中generic#! /usr/bin/env python
将是错误的)。在相关问题 更多 >
编程相关推荐