Configuring so that pip install can work from github

PythonGitPip

Python Problem Overview


We'd like to use pip with github to install private packages to our production servers. This question concerns what needs to be in the github repo in order for the install to be successful.

Assuming the following command line (which authenticates just fine and tries to install):

pip install git+ssh://[email protected]/BlahCo/search/tree/prod_release_branch/ProductName

What needs to reside in the ProductName? Is it the contents of what would normally be in the tar file after running setup.py with the sdist option, or is the actual tar.gz file, or something else?

I'm asking here because I've tried several variations and can't make it work. Any help appreciated.

Python Solutions


Solution 1 - Python

You need the whole python package, with a setup.py file in it.

A package named foo would be:

foo # the installable package
├── foo
│   ├── __init__.py
│   └── bar.py
└── setup.py

And install from github like:

$ pip install git+ssh://[email protected]/myuser/foo.git
or
$ pip install git+https://github.com/myuser/foo.git@v123
or
$ pip install git+https://github.com/myuser/foo.git@newbranch

More info at https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

Solution 2 - Python

I had similar issue when I had to install from github repo, but did not want to install git , etc.

The simple way to do it is using zip archive of the package. Add /zipball/master to the repo URL:

    $ pip install https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py egg_info for package from https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Installing collected packages: django-debug-toolbar-mongo
  Running setup.py install for django-debug-toolbar-mongo
Successfully installed django-debug-toolbar-mongo
Cleaning up...

This way you will make pip work with github source repositories.

Solution 3 - Python

If you want to use requirements.txt file, you will need git and something like the entry below to anonymously fetch the master branch in your requirements.txt.

For regular install:
git+git://github.com/celery/django-celery.git
For "editable" install:
-e git://github.com/celery/django-celery.git#egg=django-celery

Editable mode downloads the project's source code into ./src in the current directory. It allows pip freeze to output the correct github location of the package.

Solution 4 - Python

Clone target repository same way like you cloning any other project:

git clone [email protected]:myuser/foo.git

Then install it in develop mode:

cd foo
pip install -e .

You can change anything you wan't and every code using foo package will use modified code.

There 2 benefits ot this solution:

  1. You can install package in your home projects directory.
  2. Package includes .git dir, so it's regular Git repository. You can push to your fork right away.

Solution 5 - Python

Here is the simple solution

With git

pip install git+https://github.com/jkbr/httpie.git

Without git

pip install https://github.com/jkbr/httpie/tarball/master

or

pip install https://github.com/jkbr/httpie/zipball/master  

or

pip install https://github.com/jkbr/httpie/archive/master.zip

Note: You need a python package with the setup.py file in it.

Solution 6 - Python

you can try this way in Colab

!git clone https://github.com/UKPLab/sentence-transformers.git
!pip install -e /content/sentence-transformers
import sentence_transformers

Solution 7 - Python

Below format could be use to install python libraries via pip from GitHub.

pip install <LibName>@git+ssh://gi[email protected]/<username>/<LibName>#egg<LibName>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionccgillettView Question on Stackoverflow
Solution 1 - PythonHugo TavaresView Answer on Stackoverflow
Solution 2 - PythonDmitryView Answer on Stackoverflow
Solution 3 - Pythonwieczorek1990View Answer on Stackoverflow
Solution 4 - PythonavalanchyView Answer on Stackoverflow
Solution 5 - PythonSuhas_PoteView Answer on Stackoverflow
Solution 6 - PythonShaina RazaView Answer on Stackoverflow
Solution 7 - PythonAB AbhiView Answer on Stackoverflow