gpt4 book ai didi

python - 集成多个Python项目

转载 作者:行者123 更新时间:2023-12-02 01:27:53 24 4
gpt4 key购买 nike

我有 2 个 Python 项目:

Proj1(/var/www/proj1)
venv
requirments.txt
app
fun.py
fun2.py
app2
pdf.py
somefun2.py


Proj2(/var/www/proj2)
venv
requirments.txt
another
anotherfun.py
anotherfun2.py
someanother
someanotherfun.py
pdfproj2.py

两者都是独立工作的,并且都有不同的要求。

假设来自 proj1pdf.py 有一个函数 generate ,它将生成一些 PDF。它将占用同一项目中的所有其他模块(app/fun2 等)。

现在我想要的是这个功能(pdf.py->generate),我想在proj2中调用pdfproj2.py

这怎么可能?

注意:我没有使用任何框架,例如 Flask/django 等

最佳答案

至少有三种方法。

1。外部调用

什么也不改变。差不多了。

命令行调用者已经能够利用$ python proj1/app2/pdf.py arg...,调用generate()。安排 proj2pdf.py fork subprocess并确实这样做。项目1没有任何变化,因为其公共(public) API 已经支持此用例。

请注意,您可能需要仔细调整 PATHPYTHONPATHenv vars,作为正确调用 pdf.py 命令的一部分。这就是 condavenv 擅长的设置。

2。合并项目

这是一种快速而肮脏的方法。我不推荐它。

创建project3,并合并两个现有项目的源代码。取所有库依赖项的并集。

现在您可以在同一地址空间中调用generate(),与调用 python 代码相同的过程。缺点是:丑陋。较大项目的代码库不太容易维护。

3。包装

使generate()可用于project2的“正确”方法,或者对于任何项目,是将其打包。假设您要在 pypi 上发布。如果你真的这么做了并不重要让我们为这种可能性做好准备。

创建setup.py或类似的,也许使用setuptools ,并创建project1的一个轮子(或至少一个tar)。有很多方法可以做到这一点,以及最佳实践继续发展,所以我不会在这里深入探讨细节。

现在您可以将project1列为project2的requirements.txt中的依赖项,并像任何其他 dep 一样导入它。问题解决了!

这是最好的方法。它确实需要一些工作,并且学习曲线平缓。

关于python - 集成多个Python项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74007390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com