【问题标题】:Understanding how the distribution of a python script is achieved with setuptools了解如何使用 setuptools 实现 python 脚本的分发
【发布时间】:2014-09-10 14:27:23
【问题描述】:

我希望分发一些 python 脚本。这些脚本使用一些单独的包,例如 docopt,当然还使用了各种库。我希望能够将我的脚本与正常运行所需的一切一起打包。

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

我已经阅读了 setuptool 文档,但从我所阅读的内容看来,我似乎需要手动完成所有操作?如果是这样,我如何知道所有相关包和库在我的系统上的确切位置?

如果我理解正确,有人可以告诉我吗?

【问题讨论】:

  • 不用手动试试看。
  • 我看了一下这就是为什么我问我的理解是否正确。就像我认为的那样手动操作似乎很奇怪。当然它必须能够自动完成。
  • @martineau 我已经阅读了 setuptools 文档和 distutil 文档。我刚刚尝试使用基本元数据创建一个 setup.py,然后使用 setup.py dist 创建一个包。正如预期的那样,它没有做任何事情,用我的脚本文件和 setup.py 文件创建一个 dist 目录。我的脚本中使用的模块和库都没有复制到 dist 目录中。假设您打算手动收集所有包并将它们放在同一目录中,那么安全吗?
  • 试试setup.py build。您可能还会发现 Getting Started With setuptools and setup.py 很有用。
  • 我已经阅读了它们并尝试了 sdist 和 build。创建包后,我通过python setup.py install 测试了从 setup.py 安装,但未安装所需的包。我收到以下错误python setup.py install /usr/local/Cellar/python/2.7.8/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires' warnings.warn(msg)

标签: python setuptools


【解决方案1】:

好吧,我终于搞定了。

以防万一其他人看到这篇文章并想知道该怎么做。

这个想法是您有一个想要共享的脚本,但该脚本使用了各种其他模块、包等。有人想要做的最后一件事是开始将它们全部废弃以创建一个不起作用的手动包。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-08
    • 2013-12-15
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2011-02-16
    • 2016-06-04
    • 2016-01-05
    相关资源
    最近更新 更多