The reason you’re getting Requirement already satisfied
is because if you do not pass --upgrade
or -U
(the shorthand), the package is not modified if it is already installed.
(This part of the command has had a lot of discussion. Check out the first 4 issues here)
Is there a way to upgrade only the specific packagemypackage
possibily using the requirements.txt file?
You need to specify just mypackage
to pip when telling it to upgrade. If you wanted to update only requests, the pip command is:
pip install --upgrade requests
Similarly, to update from your git repository, you want to do:
pip install --upgrade git+ssh://git@github.com/myuser/mypackage.git#egg=mypackage
Since it’s a URL is a long thing, what I suggest you do what @daphtdazz suggests, use multiple requirements files, as follows:
requirements.txt
requests~=2.12.3
simplejson~=3.10.0
-r git_requirements.txt
git_requirements.txt
git+ssh://git@github.com/myuser/mypackage.git#egg=mypackage
Additionally, I suggest you use shell-aliases for your shell to ease the typing load.
alias pip_git_upgrade="pip install --upgrade -r git_requirements.txt"
Do I need to specify the#egg=mypackage
?
To quote from pip’s official documentation:
Any URL may use the #egg=name Syntax to explicitly state the project name.
Basically, using #egg=mypackage
is a good idea since you are making the the project name explicit.