setup.py that pulls in non-Python github repos and puts them in the correct directory?

Is it possible to create a setup.py file that:

  • Pulls in a github repository
  • places the files from that repository into a specified folder

I’m setting up a django package/app that uses third-party JavaScript frameworks available on github. I’d like to be able to have setup.py pull the latest version from github and then places those files into the appropriate static/js folder. So this is different from normal dependencies that are Python packages with their own setup.py files.

  • Should I add Django admin static files to my git repo?
  • How do you deploy cron jobs to production?
  • How can I write a Groovy Jenkinsfile for a Django application to run my tests?
  • git merge conflicts with our database file (multiple developers)
  • Add a subdirectory of another project as a subtree
  • What parts of a Django project should I not include in Git?
  • Git: how to specify file names containing octal notation on the command line
  • fatal: git-write-tree: error building trees
  • Import Existing Local Git Master Repo into Gitlab: Git user Access Issues
  • Cannot deploy static website on azure via Git
  • github fork confusion
  • Unable to create a snapshot in XCode 4.5.1 after update the ~/.gitconfig option to “simple”
  • 2 Solutions collect form web for “setup.py that pulls in non-Python github repos and puts them in the correct directory?”

    If you are using setuptool (setup.py) you can use the dependency requirement:
    https://stackoverflow.com/a/3481388/496445

    Otherwise as comments have suggested, set up your django project as an actual git repo and then add the github repo as a submodule

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

    Then you would just be able to cd into that submodule and git pull

    If you dont want to set your project up as a git repo, then the brute force way would be to manually clone the github repo where you want it, and then add some manual commands in your setup.py

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

    An alternative to this would be to provide a requirements.txt file for use with pip. You can specify git and mercurial repos as well as packages from PyPI, so that the user would just have to do pip install -r requirements.txt to get the whole project.

    Git Baby is a git and github fan, let's start git clone.