为了在我们公司内部署python项目,我需要制作一个可安装的分发版。
这应包括:
- 给我的项目一个鸡蛋或whl
- 项目的每个依赖项都有一个鸡蛋或whl
- (可选)生成requirements.txt文件,列出此版本的所有可安装组件
是否有一个简单的插件(例如bdist_wheel的替代方案),不仅可以编译一个轮子,还可以编译该项目的组件?
很明显,我可以编写这个脚本,但我希望有一条捷径可以用更少的步骤构建包+依赖项。
这需要在Windows+Linux上的Python 2.7上运行。
您需要为包创建一个setup.py
文件。请确保安装了最新的setuptools和pip。然后运行以下操作:
python setup.py bdist_wheel
这将为您的软件包创建一个轮子文件。这是假设你没有C/C++头、DLL等。如果你有,那么你可能还有很多工作要做。
要获得依赖项,您需要创建一个requirements.txt
文件并运行以下程序:
pip wheel .
如果您的程序包不在PyPI上,则必须手动将程序包的轮子文件复制到该命令创建的轮子文件夹中。有关更多信息,请参阅以下优秀文章:
- http://lucumr.pocoo.org/2014/1/27/python-on-wheels/
使用最新的pip
和wheel
,您只需运行
pip wheel .
在您的项目文件夹中,即使您的应用程序不在PyPi上。所有车轮都将存储在当前目录(.
)中。
要更改输出目录(例如,./wheels),可以使用-w / --wheel-dir
选项:
pip wheel . -w wheels
所有可用的选项都列在pip文档中。
使用诗歌,您可以在项目根目录中的一个名为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/
文件夹。