【问题标题】:Best way to share code across several setup.py scripts?跨多个 setup.py 脚本共享代码的最佳方式?
【发布时间】:2013-01-02 22:51:35
【问题描述】:

我正在处理几个包,我想在它们的 setup.py 脚本之间共享代码。有什么好的方法可以做到这一点,或者代码重复是我唯一的选择吗?

【问题讨论】:

  • 作为独立包,它们必须能够引用该共享代码...您可以在包中创建对此共享代码的依赖,强制用户(或包管理器)安装首先依赖项,或者以其他方式在每个包中内部复制它。对于本地的内部包,您可以随意导入,但它充其量是 hackish。
  • @Nisan.H:实际上,您可以指示安装程序获取设置依赖项,请参阅下面的答案。

标签: python setuptools


【解决方案1】:

通常setup.py 是分发不同包的入口点。因此,很难在这些包之间共享代码。

如果您在您的setup.py 中使用setuptools(或者它是fork,distribute),您可以指定在安装带有setup_requires 条目的包时必须安装的包。

不幸的是,您的setup.py 被先执行;一旦setup_requires 行被解析,那里列出的额外包将被安装在本地,但这可能对您的需求来说为时已晚。

解决方法是在调用定义setup_requires 条目的setup 之前创建一个单独的Distribution 对象:

import setuptools

setuptools.dist.Distribution(dict(setup_requires='yoursharedsetuppackage'))
# `setup_requires` is parsed and acted upon immediately; from here on out
# the yoursharedsetuppackage is installed and importable.

import yoursharedsetuppackage

setup(...)

【讨论】:

  • 如果我将它包含在setup_requires 中,这个解决方案似乎可以编译numpy。有没有办法使用pip 代替安装numpy?
  • @aaragon:为什么需要将 numpy 作为 setup 要求?如果你真的这样做,那么不,为了确保安装成功,它将首先安装它只是为了安装。如果您可以避免该要求(通过使用不需要 numpy 来创建设置的 Python 代码),那么就这样做。
  • 我正在创建一个也用作应用程序的库,因此对于最终用户,我需要一种简单的方法来安装依赖项。我想为此使用 setup.py,但不是从二进制文件安装 numpy,而是实际构建它。有什么建议吗?
  • @aaragon:那么就使用install_requires,而不是setup_requiressetup_requires 用于您需要在安装脚本本身中使用的依赖项。
  • 也许你可以帮我一把this post?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
相关资源
最近更新 更多