包括python包依赖作为可执行文件

时间:2014-11-09 06:24:40

标签: python

目前我的python包没有对wmi包的依赖,可以通过

轻松安装
pip install mypackage

如果我在wmi软件包上添加依赖项,这可能会失败,因为当我尝试通过pip安装wmi时,我遇到错误,因为我没有安装visual studio 2008 ...而且我只是设法使用它来安装它二进制分布。 我可以在我的软件包中包含并安装wmi的二进制版本吗?

主要担心的是,如果人们无法通过pip命令安装我的软件包,他们就会避免使用我的软件包。

1 个答案:

答案 0 :(得分:1)

首先要考虑的是为什么你考虑添加wmi软件包 - 因为如果你使用它是MS-Windows特定的,或者任何取决于它的东西,你的软件包将会也是MS-Windows特定的。

还有其他方法可以实现您想要做的仍然是跨平台的吗?如果没有,你真的 必须 使用它,那么你可以在文档中包含一个先决条件声明,理想情况是在setup.py中,告诉人们他们需要安装和安装wmi的工作副本,希望带有指向二进制发行版的指针。

另一种方法 - 如果你使用的是python的最新版本 - 就是以python wheels构建和分发你的包。由于轮子允许包含C包元素而不依赖于目标系统上编译器的存在 - 请参阅pep-0427& here了解更多信息。

创建轮子:

您需要运行python2> 2.6或python3,pip> = 1.4和setuptools> = 0.8。

基本上,假设您有一个setup.py,它将创建您的(源)分发,以便上传到pip:

python setup.py sdist

然后你可以创建一个二进制发行版,它应该包含当前python版本包的所有依赖项:

python setup.py bdist_wheel

这将构建一个分发轮,其中包含.pyc文件和所需包中的二进制文件。

但是 - 你需要为你计划支持的每个版本的python执行一次,(virtualenv对此是神奇的),并且如果你还计划支持64位或mac,则在每个平台上执行此操作。当然,除非你设法制作一个纯python 包,它将在没有2to3的情况下运行,在python 2& 3在这种情况下,您可以构建一个万向轮 - 显然,如果您需要.c扩展名,则无法执行此操作。

有关车轮的更多信息,请参阅Wheel - Read The Docs