2014-09-10 75 views
0

我正在寻找分发几个python脚本。这些脚本使用一些独立的软件包,如docopt,当然还可以使用各种库。编号喜欢能够将我的脚本与它需要正常运行的所有内容一起打包。了解如何通过setuptools实现python脚本的分发

从我读过的最好的方法是使用setuptools和使用setup.py脚本。 Id想知道的是,setuptools能够识别我的脚本中正在使用哪些软件包和库,并自动将所有相关软件包从其当前位置复制到另一个目录中,用于创建“新软件包”。或者是否必须在我的系统上手动查找软件包安装并将它们复制到相关文件夹以创建“新建软件包”?

我读过setuptool文档,但从我看过的文章看起来好像我需要手动完成所有工作?如果是这样,我怎么知道所有相关的软件包和库在我的系统上的确切位置?

有人可以让我知道,如果我正确理解这一点?

+0

尝试它没有手动和看看。 – martineau 2014-09-10 14:37:08

+0

我已经看了这就是为什么林问我的理解是否正确。这看起来很奇怪,就像我认为的那样手动。当然它必须能够自动完成。 – iNoob 2014-09-10 14:38:34

+0

@martineau我已阅读setuptools文档和distutil文档。我刚刚尝试用基本元数据创建setup.py,然后使用setup.py dist创建一个包。正如所料,它没有做任何事情,用我的脚本文件和setup.py文件创建一个dist dir。我的脚本中使用的模块,库都没有复制到dist导向器中。如此安全地假设你的意思是手动收集所有包,将它们放在同一个目录中? – iNoob 2014-09-10 20:00:13

回答

1

好吧,我终于得到它的工作。

只是为了防止任何人遇到这个帖子,想知道怎么做简单。

这个想法是,你有一个你想分享的脚本,但是这个脚本使用了各种其他模块,软件包等等。有人想要做的最后一件事就是开始把它们全部扔在一起创建一个非工作手册包。

通过创建setup.py文件并指定要包含在脚本中的包,这些都可以自动完成。所有“必需包”的自动包含在安装过程中完成(因此有人拥有新共享的脚本并使用easy_install进行安装)。

要为您的脚本生成分发包,您需要执行以下操作。

  • 确定您将需要包含哪些软件包(查看您的代码)。
  • 将您的脚本移动到一个新文件夹(这将是包容器)。
  • 按照此post中的说明创建您在发行版中喜欢的相关文件。 (请注意“install_requires”字段)
  • 从命令行执行python setup.py sdist,确保您的当前工​​作目录是新软件包的工作目录。
  • 您的分发包现在位于远端。
  • 通过这个你的朋友。他们需要从here安装setuptools/easy_install。
  • 安装完成后,他们可以通过执行easy_install packagename-0.1.0.tar.gz来安装软件包。现在将安装所有必需的软件包,当然还有你的脚本。