21

我正在从 Learn Python the Hard Way 中学习有关 Python 包的知识,以及它所说的其中一个练习:

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

对我来说,这似乎有点模糊。我不太确定 bin 文件夹中会包含什么样的脚本。搭便车者的包装指南

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

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

4

2 回答 2

22

我最近自己在 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”文件扩展名,那么脚本的用户不需要关心运行脚本需要什么解释器。参见维基百科 shebang 文章

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

    python setup.py sdist

  • 之后,我可以通过运行安装包和脚本

    sudo pip install test3-0.1.tar.gz

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

你可以在 github 上找到我的整个项目

于 2012-07-31T19:04:25.503 回答
2

例如Django 的项目创建Scrapy 的项目创建、django-admin.py 和 scrapy 都是 bin 文件夹中的脚本。

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

于 2012-05-29T03:15:49.120 回答