为python项目构建一个wheel / egg和所有依赖项

时间:2014-09-26 12:02:47

标签: python windows egg python-wheel

为了在我们公司内部分段python项目,我需要进行可安装的分发。

这应包括:

  • 我的项目的鸡蛋或whl
  • 项目的每个依赖项的鸡蛋或whl
  • (可选)生成列出此版本的所有可安装组件的requirements.txt文件

是否有一个简单的插件,(例如bdist_wheel的替代品)不仅可以编译一个轮子而且还可以编译该项目的组件?

显然我可以编写脚本,但我希望可能有一个捷径可以用更少的步骤构建软件包+依赖项。

这需要在Windows + Linux上使用Python 2.7。

3 个答案:

答案 0 :(得分:36)

您需要为包创建一个setup.py文件。确保安装了最新的setuptools和pip。然后运行以下命令:

python setup.py bdist_wheel

这将为您的包创建一个wheel文件。这假设您没有C / C ++标题,DLL等。如果您这样做,那么您可能还有很多工作要做。

要获取依赖项,您需要创建一个requirements.txt文件并运行以下命令:

pip wheel -r requirements.txt

如果您的软件包不在PyPI上,那么您必须手动将软件包的wheel文件复制到此命令创建的wheel文件夹中。有关更多信息,请参阅以下优秀文章:

答案 1 :(得分:27)

使用最新的pipwheel,您只需运行

即可
pip wheel .

在您的项目文件夹中,即使您的应用程序不在PyPi上。所有车轮都将存储在./wheelhouse中。但是,当我尝试它时,它错过了我的一个依赖项,我需要手动构建它。不知道为什么。

答案 2 :(得分:2)

使用 poetry,您可以在项目根目录下的一个名为 pyproject.toml 的文件中定义有关项目的依赖项和元数据:

[tool.poetry]
name = "my-project"
version = "0.1.0"
description = "some longer description"
authors = ["Some Author <some@author.io>"]

[tool.poetry.dependencies]
python = "*"

[tool.poetry.dev-dependencies]
pytest = "^3.4"

要将项目构建为轮子,请执行 poetry build

$ poetry build

Building my-project (0.1.0)
- Building sdist
- Built my-project-0.1.0.tar.gz

- Building wheel
- Built my-project-0.1.0-py3-none-any.whl

为您的项目创建了一个带有轮子的 dist/ 文件夹。