ChatGPT解决这个技术问题 Extra ChatGPT

pip install from git repo branch

Trying to pip install a repo's specific branch. Google tells me to

pip install https://github.com/user/repo.git@branch

The branch's name is issue/34/oscar-0.6 so I did pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6 but its returning a 404.

How do I install this branch?

to me your suggestion work e.g. pip install https://github.com/user/repo.git@branch doing pip install -U git+https://github.com/moskomule/anatome.git@dev worked. Perhaps remove the extra /?

0
0x90

Prepend the url prefix git+ (See VCS Support):

pip install git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6

And specify the branch name without the leading /.


is it mendatory to specify branch or commit by @ ?
@eugene, No, @ and parts after that is optional.
Is for branches, for example: pip install -U git+https://github.com/danreeves/wagtailgmaps@3.0.0
You can also put something like this git+https://github.com/adiralashiva8/robotframework-metrics@v3.1.4 into your requirements.txt and then install with pip install -r requirements.txt. This will install Tag v3.1.4 from master branch.
@SmartManoj, .git in URL? It originates from the url shown on github clone button click.
T
Teymour Aldridge

Using pip with git+ to clone a repository can be extremely slow (test with https://github.com/django/django@stable/1.6.x for example, it will take a few minutes). The fastest thing I've found, which works with GitHub and BitBucket, is:

pip install https://github.com/user/repository/archive/branch.zip

which becomes for Django master:

pip install https://github.com/django/django/archive/master.zip

for Django stable/1.7.x:

pip install https://github.com/django/django/archive/stable/1.7.x.zip

With BitBucket it's about the same predictable pattern:

pip install https://bitbucket.org/izi/django-admin-tools/get/default.zip

Here, the master branch is generally named default. This will make your requirements.txt installing much faster.

Some other answers mention variations required when placing the package to be installed into your requirements.txt. Note that with this archive syntax, the leading -e and trailing #egg=blah-blah are not required, and you can just simply paste the URL, so your requirements.txt looks like:

https://github.com/user/repository/archive/branch.zip

Note: from Django 1.9 on, Django ships with a file that has a unicode filename. The zip extractor used by pip chokes on that. An easy workaround is to replace .zip with .tar.gz, as the tar extractor works.
I wonder if pip could pass --depth 0 when cloning to make it more efficient (the entire git history is not needed to install a snapshot for pip). git-scm.com/docs/git-clone
This also works for commit hashes! pip install https://github.com/django/django/archive/ebaa08b.zip
Thanks for pointing out the speed difference. I did not test and compare them, but I believe the speed difference does exist, because installing from a branch would still result in downloading the entire repo history, while installing from a .zip (or .tar.gz) would result in downloading just a snapshot of the repo.
Is it possible to install extras using this syntax? For instance, I'm trying to install github.com/apache/incubator-airflow @ master (the normal PyPI package is apache-airflow) to work with an unreleased version. I'd like to convert the call pip install apache-airflow[crypto, slack] to install these extras with the archive version. I tried pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack] but this breaks the URL and installation.
v
vikas027

Instructions to install from private repo using ssh credentials:

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version

To install a package from a subdirectory, say stackoverflow

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version#subdirectory=stackoverflow

https://pip.pypa.io/en/stable/topics/vcs-support/


Could we get the source/documentation for this? I like this solution.
I'm not actually sure where I found it.
@JustinRice The official documentation for pip can be a good source.
R
Reblochon Masque

Just to add an extra, if you want to install it in your pip file it can be added like this:

-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal

It will be saved as an egg though.


Better to use it without the -e. See: stackoverflow.com/a/34518202/451710
Thanks for the comment, very interesting. I think people tend to use the -e flag to avoid any possible conflict with an already existent package. I guess is a matter of choice
And if you want "extras", append them in he fragment, like that: -e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
Note that the -e does not actually seem to be required.
For some reason, it doesn't work for me without the -e
D
Deepak Sharma

This worked like charm:

pip3 install git+https://github.com/deepak1725/fabric8-analytics-worker.git@develop

Where :

develop: Branch

fabric8-analytics-worker.git : Repo

deepak1725: user


Thank you for giving the full explanation. :)
p
prosti

You used the egg files install procedure. This procedure supports installing over git, git+http, git+https, git+ssh, git+git and git+file. Some of these are mentioned.

It's good you can use branches, tags, or hashes to install.

@Steve_K noted it can be slow to install with "git+" and proposed installing via zip file:

pip install https://github.com/user/repository/archive/branch.zip

Alternatively, I suggest you may install using the .whl file if this exists.

pip install https://github.com/user/repository/archive/branch.whl

It's pretty new format, newer than egg files. It requires wheel and setuptools>=0.8 packages. You can find more in here.


The question is not specify to github. The notion of an archive/branch.zip is specific to github only.
J
Javad Nikbakht

Pip is a package manager of python. You can download Python libraries from some Python repositories like PyPI. You can also download libraries from a git repository. This is gonna be the issue to be explained in this article.

As you may know, you can use two protocols which are http and ssh to do something on git repositories. Using protocol ssh instead of http may provide some ease of use. Because of nature of ssh, you can do something with your primary/public keys. So, you don't have to input your credentials all the time. But I'll be giving a way for both;

Here are the example with Github repositories;

For HTTP

pip install git+https://github.com/<project_owner>/<project_name>

For SSH

pip install git+ssh://git@github.com/<project_owner>/<project_name>.git

For Local Git Repository

pip install git+file///path/to/your/git/project/

Installing a special branch, tag or commit

The above commands will only install what is available in the default branch. In most of the cases you want to target a specific branch, tag or maybe even a commit. This can be achieved by providing ‍‍‍‍‍@ argument to the git string.

Example:

pip install git+https://github.com/nezhar/django-model-prefix@a5cabf1ac210b6358ea358b1d268d802114d85d4

Providing options for extras_require

Some packages provide extras_require inside setup.py or setup.cfg. In order to target them during the installation process, the #egg argument must be provided as a value in contains the name of the package and the option for the extras_require.

Example:

pip install git+https://github.com/anexia-it/jsonschema@draft2020-12#egg=jsonschema[format]

C
Charlie Parker

to me your suggestion from question work e.g.

pip install https://github.com/user/repo.git@branch

translating concretely to doing

pip install -U git+https://github.com/moskomule/anatome.git@dev

worked. Perhaps remove the extra / is redundant. My output:

(original_anatome_env) brando~/ultimate-anatome ❯ pip install -U git+https://github.com/moskomule/anatome.git@dev
Collecting git+https://github.com/moskomule/anatome.git@dev
  Cloning https://github.com/moskomule/anatome.git (to revision dev) to /private/var/folders/x4/0xq0brj57xz3dbhbmblypbm00000gr/T/pip-req-build-62d_ghd2
  Running command git clone -q https://github.com/moskomule/anatome.git /private/var/folders/x4/0xq0brj57xz3dbhbmblypbm00000gr/T/pip-req-build-62d_ghd2
  Running command git checkout -b dev --track origin/dev
  Switched to a new branch 'dev'
  Branch 'dev' set up to track remote branch 'dev' from 'origin'.
  Resolved https://github.com/moskomule/anatome.git to commit 4b576e51cb1824a57ea04974e0f92b5a6143294d
Requirement already satisfied: torch>=1.10.0 in /Users/brando/anaconda3/envs/metalearning/envs/original_anatome_env/lib/python3.9/site-packages (from anatome==0.0.6) (1.10.0)
Requirement already satisfied: torchvision>=0.11.1 in /Users/brando/anaconda3/envs/metalearning/envs/original_anatome_env/lib/python3.9/site-packages (from anatome==0.0.6) (0.11.1)
Requirement already satisfied: typing-extensions in /Users/brando/anaconda3/envs/metalearning/envs/original_anatome_env/lib/python3.9/site-packages (from torch>=1.10.0->anatome==0.0.6) (3.10.0.2)
Requirement already satisfied: pillow!=8.3.0,>=5.3.0 in /Users/brando/anaconda3/envs/metalearning/envs/original_anatome_env/lib/python3.9/site-packages (from torchvision>=0.11.1->anatome==0.0.6) (8.4.0)
Requirement already satisfied: numpy in /Users/brando/anaconda3/envs/metalearning/envs/original_anatome_env/lib/python3.9/site-packages (from torchvision>=0.11.1->anatome==0.0.6) (1.21.4)
Building wheels for collected packages: anatome
  Building wheel for anatome (setup.py) ... done
  Created wheel for anatome: filename=anatome-0.0.6-py3-none-any.whl size=10167 sha256=63b12a36f33deb8313bfe7756be60bd08915b8ba36711be47e292b590df70f61
  Stored in directory: /private/var/folders/x4/0xq0brj57xz3dbhbmblypbm00000gr/T/pip-ephem-wheel-cache-rde_ngug/wheels/19/e4/be/01479e8cba62ae8cdcd501cd3bf49e199f2bb94732a6a1b006
Successfully built anatome
Installing collected packages: anatome
  Attempting uninstall: anatome
    Found existing installation: anatome 0.0.5
    Uninstalling anatome-0.0.5:
      Successfully uninstalled anatome-0.0.5
Successfully installed anatome-0.0.6

0.6.0 is the dev branch version number and 0.5.0 is the master, so it worked!


E
Ekremus

For windows & pycharm setup:

If you are using pycharm and If you want to use pip3 install git+https://github.com/...

firstly, you should download git from https://git-scm.com/downloads

then restart pycharm

and you can use pycharm terminal to install what you want

https://i.stack.imgur.com/1U4qQ.png