"无需使用.py扩展名分发Python脚本"

2024-09-21 17:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我用Python编写一个用于分发的包,并将一些脚本放在setup.pyscripts中,有没有一种标准方法可以使它们不具有*.py扩展名?仅仅生成不带.py扩展名的文件就足够了,还是需要额外的东西?从文件名中删除.py是否会破坏与Python工具(如setup.py/distutils等)相关的任何功能?谢谢。在


Tags: 文件工具方法py功能脚本标准文件名
3条回答

如果要从命令行执行脚本,.py扩展实际上不会为您做任何事情。脚本将在两种情况下使用Python解释器执行:

  1. 您在命令行明确表示要这样做:$ python nameofyourscript
  2. 您明确地说要做到这一点,在脚本顶部包含一个指向Python的shebang。它的首选版本是#!/usr/bin/env python。在

通过在每个脚本中包含一个shebang,您可以根据需要为文件命名。在

如果不执行这些操作之一,脚本将作为一个普通脚本执行,该脚本适用于您正在使用的任何shell。在

只有当您想要导入模型AFAICT时,.py扩展才是必需的。请记住,pipeasy_install等都是简单的可执行文件,顶部有shebang。唯一依赖文件扩展名来执行的操作系统是Windows。在

如果需要与Windows兼容,请不要删除.py扩展名,或者使用setuptools的entry_points选项自动生成适合系统脚本文件,例如,要将pip.main()函数作为脚本安装,pipsetup.py中指定:

  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将是错误的)。在

相关问题 更多 >