什么脚本会进入Python包的bin文件夹?

时间:2012-05-29 02:58:42

标签: python package directory bin

我正在学习思科Python艰难之路中的Python包,以及其中的一个练习:

  

将脚本放在可以运行的bin目录中

对我来说,这看起来有点模糊。我不确定哪种脚本会进入bin文件夹。 The Hitchhiker's Guide to Packaging

  

将您编写过的任何使用您的软件包的脚本放入bin中,您认为这些脚本对您的用户有用。如果您没有,请删除bin目录。

但是我仍然想知道那里会有什么样的剧本。所以,我知道它可能听起来像一个愚蠢的问题,但有人可以给我一个例子说明何时,以及为什么人们会将“脚本”放在他们的包的bin文件夹中?

2 个答案:

答案 0 :(得分:20)

我最近刚刚在LPTHW中完成了Ex46。和你一样,我对脚本感到困惑。如果另一个答案对你来说太高级了,我最后只是简单地写了一个“hello world”脚本:

#!/usr/bin/env python

from test3 import printstring
printstring.printstring("test script working")
print "test over"

我将该文件命名为testscript3.py(*注意,我后来才知道,如果它是一个我想看起来像系统命令的真实脚本,那么放弃.py文件扩展名会更方便)

我的文件test3.py是这样的:

def printstring(s='you did not provide string'):
    print s

这是我在尝试让这个过程发挥作用时学到的一些新手:

  • #!符号有时发音为shebang,简单的解释是该行上的命令告诉shell使用python来运行脚本。如果您不使用“.py”文件扩展名,那么脚本的用户无需关心运行脚本所需的解释器。请参阅wikipedia shebang article

  • 我运行以下命令打包发行版:

    python setup.py sdist

  • 执行此操作后,我可以通过运行

    来安装软件包和脚本

    sudo pip install test3-0.1.tar.gz

  • 我担心的一件事是脚本文件的权限。但是,我注意到distutils在打包时会处理这个问题(将模式改为755或其他)。

您可以找到我的whole project for this example on github

答案 1 :(得分:2)

例如Django's project creatingScrapy's project creating,django-admin.py和scrapy都是bin文件夹中的脚本。

通过检查几乎基于python的工具,您可以获得更多示例。