从GitHub仓库伪造buildout中的egg

0 投票
1 回答
557 浏览
提问于 2025-04-17 19:39

我想在我正在做的Django项目中试试这个中间件:https://github.com/directeur/django-pdf。它叫做“django-pdf”,但和这个链接中的内容https://pypi.python.org/pypi/django-pdf/1.0.2不一样。很遗憾,Directeur的django-pdf也不是很简单就能使用的:它没有setup.py或requirements.txt这些文件。

请问有没有什么方法或者工具可以把这个包安装到Django的路径中,还是说我必须要复制这个代码库并添加一个setup.py文件呢?

这是我现在的开发配置文件buildout.cfg:

[buildout]
parts =
    python
    django
    django-nose
    pyflakes
show-picked-versions = true
develop = .
eggs = django-core7
versions = versions

[python]
recipe = zc.recipe.egg
interpreter = python
eggs = ${buildout:eggs}

[django]
recipe = djangorecipe
project = core7
projectegg = core7
settings = development
test = core7
eggs =
    ${buildout:eggs}
    ${django-nose:eggs}
    django_pdb
extra-paths = ${buildout:sources-dir}

[django-nose]
recipe = zc.recipe.egg
eggs =
    django-nose
    coverage

# Make this a separate part so it doesn't get included in Django's path.
[pyflakes]
recipe = zc.recipe.egg
eggs = pyflakes

[versions]
django = 1.5

1 个回答

1

根据我的理解,buildout 很依赖 setuptools(或者至少需要一个 setup.py 文件)。没有这个文件,buildout 就没法生成一个可分发的包(也就是一个 egg)。幸运的是,GitHub 让你很方便地复制一个仓库,这样你就可以添加一个 setup.py 文件了。你可能还想考虑提供一个补丁。

据我所知,没有任何配方可以让你在没有 setup.py 的情况下添加项目。这样的项目听起来像是个反模式,因为这会打破项目需要 setup.py 的“约定”。

第一个选项似乎更好。当你的项目在 GitHub 上时,你可以使用 mr.develop 来引入你的依赖。

撰写回答