为了在我们公司内部分段python项目,我需要进行可安装的分发。
这应包括:
是否有一个简单的插件,(例如bdist_wheel的替代品)不仅可以编译一个轮子而且还可以编译该项目的组件?
显然我可以编写脚本,但我希望可能有一个捷径可以用更少的步骤构建软件包+依赖项。
这需要在Windows + Linux上使用Python 2.7。
答案 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)
使用最新的pip
和wheel
,您只需运行
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/
文件夹。