Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
setup.py,将非Python github repos拉入并将其放在正确的目录中?_Python_Django_Git_Github_Setup.py - Fatal编程技术网

setup.py,将非Python github repos拉入并将其放在正确的目录中?

setup.py,将非Python github repos拉入并将其放在正确的目录中?,python,django,git,github,setup.py,Python,Django,Git,Github,Setup.py,是否可以创建一个setup.py文件: 拉入github存储库 将该存储库中的文件放置到指定的文件夹中 我正在设置一个django包/应用程序,它使用github上提供的第三方JavaScript框架。我希望能够让setup.py从github获取最新版本,然后将这些文件放入相应的static/js文件夹中因此,这不同于通常的依赖项,它们是具有自己setup.py文件的Python包。如果您使用的是setuptool(setup.py),则可以使用依赖项要求: 否则,正如评论所建议的,将d

是否可以创建一个setup.py文件:

  • 拉入github存储库
  • 将该存储库中的文件放置到指定的文件夹中

我正在设置一个django包/应用程序,它使用github上提供的第三方JavaScript框架。我希望能够让setup.py从github获取最新版本,然后将这些文件放入相应的static/js文件夹中因此,这不同于通常的依赖项,它们是具有自己setup.py文件的Python包。

如果您使用的是setuptool(setup.py),则可以使用依赖项要求:

否则,正如评论所建议的,将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")

另一种方法是提供一个requirements.txt文件,用于
pip
。您可以指定git和mercurial repos以及PyPI中的包,因此,用户只需执行
pip install-r requirements.txt
即可获得整个项目。

如何将它们作为子模块,以便它们已经包含在子目录中?我认为主要问题是,他可能一开始没有将django项目设置为git repo?事实上,我最终正在计划,所以这是可行的。如果问题中的存储库没有setup.py文件,这是否有效?很抱歉,投票否决你,但这个答案只有在我处理python存储库时才有效,而我不是。我只是想,有些人可能会尝试一下,但它不起作用。如果有一种神奇的方法让pip通过requirements.txt文件拉入非Python模块,请告诉我,因为文档中没有这方面的内容。如果所讨论的项目不是Python模块,那么这种方法有效吗?呃,之前的一切,不然。我仍然计划使用setuptool或distutils(取决于哪个更容易配置),但我拉入的对象不是一个模块,所以我很确定依赖关系不会起作用。如果不是python包,我想不会。选项二非常简单。好的,我已经设置了子模块,但是它们是空的,当出于某种原因调用pip时,克隆操作不会导致加载它们。有没有办法让我这样做,当pip运行时,它也会更新子模块?pip没有直接的VCS支持git特定的命令,比如子模块,所以我想你需要做的是在setup.py的末尾放一个'post'命令:
git子模块更新--init
通过修改pip来“修复”它。请在此处查看我的找零: