如何自建egg仓库?

17 投票
4 回答
4731 浏览
提问于 2025-04-15 14:49

假设你在一个团队里,负责维护很多内部的Python库(也叫做“蛋”),但由于某种原因,不能把它们上传到pypi。那你该怎么做才能让团队成员仍然可以使用easy_install来安装这些库呢?

基本上,如果能这样做就太好了……

(someproj)uberdev@hackmo:~$ easy_install myproprietary.lib-dev
user: uberdev 
password:...
fetching......
Searching for myproprietary.lib-dev
Reading http://dev.mycompany.corp/myproprietary.lib-dev
Reading http://dev.mycompany.corp
Reading http://dev.mycompany.corp/dist
Best match: myproprietary.lib-dev
Downloading http://dev.mycompany.corp/dist/myproprietary.lib-dev

我想应该有一些服务器可以安装,但我希望能得到专家在这方面的指导。

谢谢

4 个回答

2

我在使用 ClueReleaseManager

ClueReleaseManager 是一个实现了 PyPi 服务器后端的工具,PyPi 是一个提供 Python 包的地方,地址是 http://pypi.python.org。它使用 SQLAlchemy(默认是基于 sqlite)来存储所有项目的元数据,也就是项目的基本信息,同时用文件系统来存放项目文件。

3

如果你的团队是分散在不同地方的,并且大家还能正常交流,那么用一个简单的版本控制系统来管理源代码会比其他类型的服务器更好。

你只需要创建项目,让每个人都从主干(trunk)上下载代码。当代码有变化时,告诉他们去更新一下。

如果你的团队在同一个地方,并且大家也能正常交流,那么共享一个驱动器,里面放着“官方”的库文件也是个不错的选择。只需挂载这个驱动器,并把它加入到你的 PYTHONPATH 中。

如果你想要每个人都有本地的副本,可以在版本控制系统(或者共享驱动器)里提供官方源代码,并且附上一个好的 setup.py 文件。这样他们只需进入那个目录,运行 python setup.py install,其他的事情就会自动完成。这比 easy_install 简单一点,因为 setup.py 已经是 Python 自带的部分。

对于那些不太交流的人来说,使用“Eggs”是个选择。

不过你团队的成员通常都是能正常交流的,所以不需要使用更复杂的“Eggs”。基本的 setup.py 就足够用了。

8

把所有的包放到一个所有开发者都能访问的目录里(比如说放在一个网络服务器上)。

要从这个目录安装包,可以输入:

$ easy_install -H None -f http://server/vdir TheEggToInstall

或者。

$ easy_install -H None -f /path/to/directory TheEggToInstall

-H None的意思是,不允许从任何主机下载包(除了在-f中指定的那个主机)。

这个目录可以通过http访问,或者是你挂载的一个目录(比如NFS、Windows共享等)。也许FTP也可以用?

关于easy_install的更多信息,可以查看文档

撰写回答