在Python包中包含脚本
我正在开发一个Python包,目前这个包里面有一些子包、模块和可以在这些模块中找到的函数。现在,我有一个脚本,这个脚本使用了包中的某些元素(还有其他包),我想把这个脚本和包一起发布。我的目标是,潜在的用户在安装了这个包后,可以简单地运行这个脚本并得到结果。
那么,正确的做法是什么呢?我可以直接把这个脚本放在包的结构里,这样它就会和包一起发布。但是,包安装到用户的电脑上时,通常会放在一个用户不太容易访问的目录里。
2 个回答
0
Distutils 是一个工具,可以帮助我们安装脚本。不过,关于这些脚本应该放在哪里,方便用户使用,这个问题就比较复杂了。比如说,在Windows系统中,它是通过文件后缀来识别文件类型,而不是像其他系统那样使用“shebang”这种方式,而且我知道的情况是,Windows没有一个简单的方法来把这些脚本注册为命令。通常情况下,和模块一起安装的脚本会通过检查 __name__=='__main__'
来判断自己是否是主要程序,然后可以通过类似 python -m SimpleHTTPServer
这样的命令来运行。
2
如果你的软件包是通过setuptools或者类似的工具来发布的,你可以使用scripts这个关键词,这样setuptools就会把它放在正确的位置,让系统能够找到它。想了解更多,可以看看这个链接:命令行脚本