7

scripts如果我正在用 Python 编写一个包进行分发,并且我在of中放置了一些被视为可执行文件的脚本setup.py,是否有一种标准方法可以使它们没有 *.py 扩展名?只制作没有 .py 扩展名的文件就足够了吗,还是需要任何额外的东西?是否会从文件名中删除 .py 会破坏与setup.py/distutils 等 Python 工具相关的任何功能?谢谢。

4

3 回答 3

2

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

于 2013-01-30T03:28:42.400 回答
1

如果您需要 Windows 兼容性,则不要删除.py扩展名或使用 setuptoolsentry_points选项自动生成适合系统脚本文件的选项,例如,将pip.main()函数安装为脚本,pip指定setup.py

  entry_points=dict(console_scripts=['pip=pip:main', 
          'pip-%s=pip:main' % sys.version[:3]]),

entry_points即使您不需要 Windows 兼容性,使用它也是有意义的,因为它会为您生成正确的 shebang,指向特定的 python 解释器(其中泛型#! /usr/bin/env python是错误的)。

于 2013-01-30T04:48:29.363 回答
0

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

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

通过在每个脚本中包含一个 shebang,您可以将文件命名为您想要的任何名称。

如果不执行其中任何一项操作,脚本将作为普通脚本执行,适用于您使用的任何 shell。

于 2013-01-30T04:18:31.450 回答