setup.py 拉入非 Python github repos 并将它们放在正确的目录中?
Posted
技术标签:
【中文标题】setup.py 拉入非 Python github repos 并将它们放在正确的目录中?【英文标题】:setup.py that pulls in non-Python github repos and puts them in the correct directory? 【发布时间】:2012-01-29 06:53:19 【问题描述】:是否可以创建一个 setup.py 文件:
拉入 github 存储库 将该存储库中的文件放入指定文件夹中我正在设置一个使用 github 上提供的第三方 javascript 框架的 django 包/应用程序。我希望能够让 setup.py 从 github 中提取最新版本,然后将这些文件放入适当的 static/js 文件夹中。 因此,这与普通的依赖项不同,后者是具有自己 setup.py 文件的 Python 包。
【问题讨论】:
如何将它们设为子模块,以便它们已经包含在子目录中? chrisjean.com/2009/04/20/… 我认为主要问题是他可能一开始没有将他的 django 项目设置为 git repo? 实际上,我最终是在计划它,所以这行得通。 【参考方案1】:如果您使用的是 setuptool (setup.py),您可以使用依赖项要求: https://***.com/a/3481388/496445
否则,正如 cmets 所建议的,将您的 django 项目设置为实际的 git repo,然后将 github repo 添加为子模块
cd myProject
git init
git submodule add git://path/to/repo.git local/location/repo
然后你就可以 cd 进入那个子模块和git pull
如果你不想将你的项目设置为 git repo,那么蛮力的方法是手动克隆你想要的 github repo,然后在你的 setup.py 中添加一些手动命令
import os
os.system("cd path/to/repo && git pull")
【讨论】:
如果有问题的项目不是 python 模块,这是否有效?呃,其他之前的一切。我仍在计划使用 setuptool 或 distutils(取决于哪个更容易配置),但我引入的对象不是模块,所以我很确定依赖不会起作用。 我想不会,如果它不是 python 包的话。不过,选项二非常简单。 好的,我已经设置了子模块,但是它们是空的,当 pip 由于某种原因被调用时,克隆操作不会导致它们被加载。有什么办法可以让我在运行 pip 时也更新子模块? pip 对 git 特定命令(如子模块)没有直接的 VCS 支持,所以我想您需要做的是在 setup.py 末尾放置一个“post”命令:@ 987654326@ 通过修改 pip 来“修复”它。在此处查看我的更改:github.com/JordanReiter/pip/commit/…【参考方案2】:另一种方法是提供一个 requirements.txt 文件以用于pip
。您可以指定 git 和 mercurial 存储库以及来自 PyPI 的包,这样用户只需执行 pip install -r requirements.txt
即可获得整个项目。
【讨论】:
如果问题中的存储库没有 setup.py 文件,这是否有效? 很抱歉让你失望,但这个答案只有在我处理 python 存储库时才有效,我不是。只是想有些人可能会尝试这个并让它不起作用。如果有一种神奇的方法可以让 pip 通过 requirements.txt 文件拉入非 Python 模块,请告诉我,因为文档中没有关于此的内容。以上是关于setup.py 拉入非 Python github repos 并将它们放在正确的目录中?的主要内容,如果未能解决你的问题,请参考以下文章
python 从setup.json读取的示例setup.py