程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何管理同一服务器上应用程序/脚本之间的共享 Python 库?如何处理导入以及如何管理版本控制?

发布于2024-11-25 16:43     阅读(153)     评论(0)     点赞(7)     收藏(4)


我在工作中开发了一些 Python 库,用于访问不同的内部工具。我遇到了两个主要问题,需要一些帮助。

  1. 在脚本/应用程序之间使用共享模块。如果我想在不同的脚本/库中使用模块,那么在特定虚拟环境/全局模块下使用 pip 安装它们后,如何处理更新?在我的示例中,我有一个 django 应用程序将使用某些模块,然后一些独立脚本可能会再次使用它。

  2. 版本控制 - 我目前正在尝试跟踪 bitbucket 中的文件。如果这些脚本将使用这些模块的共享实例。我该如何处理对模块的更改,然后将其推送到服务器?每次我想测试或更新时,我是否必须登录服务器并提取新代码并重新安装模块?

尝试从 bitbucket 克隆。这将拉取文件,但我如何才能将其作为全局导入。


解决方案


我看到两个选项:

  • 打包你的模块(作为本地文件)
  • 使用 git 子模块

本地打包模块

它就像在 pypi 上发布一样,但无需发布。打包到 wheel 文件,然后每次想要“升级”时使用 pip install / upgrade 模块。它很简洁,您可以像其他任何应用程序一样,通过依赖文件控制哪个应用程序使用哪个版本的模块。很简单。

像为 pypi 创建一个包(请参阅https://packaging.python.org/en/latest/tutorials/packaging-projects/

在 git 中使用子模块。

您可以在 git 存储库中拥有跟踪外部模块(存储库)的子模块。基本上就是在您的存储库中创建一个映射到另一个存储库的“文件夹”。这很“方便”,但我发现也很容易搞砸,因为您需要专门提取子模块中的更改(更新不会仅仅因为您推送到了其他存储库而显示)。直接在主存储库中更改子模块代码也很诱人,但您需要确保跟踪/提交这些更改到子模块;这与将更改提交到主存储库不同。如果您有多个使用相同子模块的应用程序,并在这些应用程序中进行更改,您经常会遇到不同步的更改和合并冲突。

因此,我倾向于在版本更改时打包并重新安装。您可以有一个文件夹结构,其中您的存储库位于同一级别,公共模块作为一个文件夹,并将依赖项指向相对路径。当您在服务器上安装时,您会克隆具有相同文件夹结构的存储库,并且 pip install deps 指向相对路径。理想情况下,对于部署,您有一个存储服务器来发布您的私有模块并从那里进行 pip 安装。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/2045896/ee7b7af03e144be8930e/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

7 0
收藏该文
已收藏

评论内容:(最多支持255个字符)