如何编写setup.py拉取非Python GitHub仓库并放入正确目录?

7 投票
2 回答
2153 浏览
提问于 2025-04-17 09:09

有没有办法创建一个setup.py文件,来:

  • 从github上获取一个代码库
  • 把这个代码库里的文件放到指定的文件夹里

我正在设置一个django的包/应用,它需要使用一些在github上可以找到的第三方JavaScript框架。我希望setup.py能够从github上拉取最新版本的文件,然后把这些文件放到合适的static/js文件夹里。所以这和普通的依赖项不同,普通的依赖项是有自己setup.py文件的Python包。

2 个回答

2

另一种方法是提供一个叫做 requirements.txt 的文件,这个文件可以和 pip 一起使用。你可以在这个文件里指定 git 和 mercurial 的代码库,还有来自 PyPI 的软件包。这样,用户只需要运行 pip install -r requirements.txt 就能一次性安装整个项目需要的所有东西。

2

如果你在使用setuptools(setup.py),可以使用依赖要求:

https://stackoverflow.com/a/3481388/496445

否则,正如评论中提到的,建议把你的django项目设置成一个真正的git仓库,然后把github的仓库作为一个子模块添加进去。

cd myProject
git init
git submodule add git://path/to/repo.git local/location/repo

这样你就可以进入那个子模块,然后使用git pull命令来更新了。

如果你不想把项目设置成git仓库,那么比较直接的方法就是手动克隆你想要的github仓库,然后在你的setup.py中添加一些手动命令。

import os
os.system("cd path/to/repo && git pull")

撰写回答