首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在另一个Python轮子中嵌入一个轮子?

是否有可能在另一个Python轮子中嵌入一个轮子?
EN

Stack Overflow用户
提问于 2022-06-09 08:34:26
回答 2查看 117关注 0票数 1

我想发布一个依赖于PyPI的OpenBabel包。OpenBabel的维护人员为Python3.7上传了二进制Windows轮子,但不是后期版本的。Christoph的优秀场地包含3.8及更高版本的轮子,但它们不在PyPI上。

我希望我的软件包的用户只需要pip install my-package,并且安装了openbabel。如果在Windows上使用Python3.7,openbabel将从PyPI加载。如果他们使用新版本的Python,安装my就会失败,因为没有轮子,在Windows上从源代码安装openbabel是一件很痛苦的事。

我想将Christoph网站的预编译车轮包含在我的轮子中,并安装它们。有什么合理的办法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-06-09 08:52:32

TL;DR:使用local path dependencies而不是正常的依赖项。

在这种情况下,您需要将的OpenBabel源代码嵌入到您自己的代码中(例如,作为子模块)。

然后,您需要在项目需求中将OpenBabel依赖关系从正常的依赖项更改为本地依赖项。

在将OpenBabel嵌入到您的项目之后,您将不需要更改OpenBabel部件,您可以在自己的代码上继续开发。

而且,每次打包项目时,您的车轮上都会有OpenBabel。

=====示例=====

例如,您的项目结构将如下所示:

代码语言:javascript
复制
YourProject
├── pyproject.toml
├── openbabel_copy
│   ├── __init__.py
│   └── ...
└── myproject
    ├── __init__.py
    ├── a.py
    └── ...

在您的pyproject.toml中,如果您使用的是poetry,则应该有这样的行

代码语言:javascript
复制
[tool.poetry.dependencies]
openbabel = { path = "openbabel_copy" }
scipy = "^1.6.3"
protobuf = "^3.17.1"
...

这样,您就可以在myproject中使用和导入openbabel,而不会出现问题。

这叫做local path dependency

但是,如果您正在使用其他打包工具,我不知道如何使用.(诗歌很好用,除了它缓慢的依赖解析system...but,我仍然强烈建议:)

票数 1
EN

Stack Overflow用户

发布于 2022-06-14 06:34:48

我的解决方案不是一个优雅的-我创建了一个新的github公共回购,并把车轮从Christoph的网站作为释放文物在该回购。然后,我为这些车轮添加了https://依赖项,而不仅仅是openbabel包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72557147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档