首页 > 解决方案 > 本地 python 存储库,但没有服务器

问题描述

我的问题与这个问题非常相似:
python repo without hosting a server
,但对该问题的公认答案对我来说不是解决方案,因为它用 git 服务器替换了 Web 服务器。

阅读此
https://packaging.python.org/guides/hosting-your-own-index/
我发现创建 python 存储库非常容易
我只需要创建一个正确的目录结构并运行一个 Web 服务器使该目录结构可用。
我想跳过服务器并拥有一个完全本地的存储库。
我不想获得在所需计算机上运行服务器的权限,因为我不会获得它。
我不想要外部服务。
我只希望本地存储库在没有服务器的情况下可用。
有没有办法为 pip 指定存储库 url,例如“file:///d:/example-repository”或类似的东西?

我知道可以使用 pip 手动安装选定的包文件,但这不是我想要的。
我想要一个完整的存储库,但离线。

为什么我想要一个完全离线的存储库以及包如何进入它是一个完全不同的主题,独立于这个问题?

编辑添加:显然,我的意思并不完全清楚。考虑以下情况:
我开发了多个 python 库来做一些在我的项目中经常发生的事情。
例如通过 USB 控制我们的一些定制设备。
我从这些库创建 python 包。
我不会在任何地方上传它们。它们旨在在本地使用,如果没有设备,它们无论如何都是无用的。
稍后我想使用这些库创建多个独立的项目。
每个项目都有自己的虚拟环境。对于每个我只安装它需要的包。包括我自己的图书馆。可能不同的项目最终会使用我的库的不同版本。当我更新一个库时,我不想将它传播到已经使用它的所有项目,因为那里有破坏某些东西的风险。
那么我该如何处理呢?
对于公共包,这很容易 - 只需通过 PIP 安装。
我可以通过指定项目的要求并让 pip install 我需要的东西来自动执行此操作。
但后来我的私人包裹。
我也可以从 PIP 安装它们,方法是手动将 pip 指向我在发布库时创建的包文件。
但这是手工作业。
一种解决方案是创建我自己的服务器来为我的库提供服务,并将其 url 添加到 pip。
这实际上是一件非常合理的事情。
但就我而言,我想跳过服务器部分。
经过一番阅读,我发现要设置我的服务器,我只需要一个 http(s) 服务器和一个正确准备的文件系统子结构。
这意味着 http 服务器不知道它实际上是在为 python 存储库提供服务。
Pip 正在做所有了解文件系统结构的工作。
所以我想跳过http服务器,让pip直接读取本地文件系统,不需要http服务器的接口。
(无论如何,它已经完成了大部分工作)
类似地,例如 APT(某些 gnu/linux 发行版的包管理器)如何配置为从 CD-ROM 而不是 Internet 安装包。

所以这就是为什么我发布这个问题以了解是否有实现这一目标的好方法。

标签: python

解决方案


您有一个很好的“不想要”功能列表。但是,您不清楚自己想要什么。通常,“存储库”是一个数据库——在你的情况下是代码——它存储服务的数据——在你的情况下,是对代码进行版本控制的各种操作。

如果您需要服务的功能,特别是如果您使用下载的包来提供这些功能,那么您需要提供该包的配置。对于我的 devOps 与我讨论过的两个包,该包被设置为一个公共服务:一个配置为服务器。

据我所知,您需要配置一个本地服务器——即提供服务的软件抽象。


推荐阅读