Comment énoncer les exigences.txt directement github source
j'ai installé une bibliothèque en utilisant la commande
pip install git+git://github.com/mozilla/elasticutils.git
qui l'installe directement à partir d'un dépôt GitHub. Cela fonctionne bien et je veux avoir cette dépendance dans mon requirements.txt
. J'ai regardé d'autres tickets comme ce mais ça n'a pas résolu mon problème. Si je mets quelque chose comme
-f git+git://github.com/mozilla/elasticutils.git
elasticutils==0.7.dev
dans le fichier requirements.txt
, un pip install -r requirements.txt
produit le résultat suivant:
Downloading/unpacking elasticutils==0.7.dev (from -r requirements.txt (line 20))
Could not find a version that satisfies the requirement elasticutils==0.7.dev (from -r requirements.txt (line 20)) (from versions: )
No distributions matching the version for elasticutils==0.7.dev (from -r requirements.txt (line 20))
la documentation du fichier d'exigences ne mentionne pas les liens utilisant le spécificateur de protocole git+git
, donc peut-être que ce n'est tout simplement pas pris en charge.
est-ce que quelqu'un a une solution pour mon problème?
5 réponses
" modifiable "la syntaxe des paquets peut être utilisée dans requirements.txt
pour importer des paquets d'une variété de VCS (git, hg, bzr, svn) :
-e git://github.com/mozilla/elasticutils.git#egg=elasticutils
aussi, il est possible de pointer au commit particulier:
-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils
normalement, votre fichier requirements.txt
ressemblerait à quelque chose comme ceci:
package-one==1.9.4
package-two==3.7.1
package-three==1.0.1
...
pour spécifier un GitHub repo, vous n'avez pas besoin de la convention package-name==
.
les exemples ci-dessous mettent à jour package-two
en utilisant un GitHub repo. Le texte entre @
et #
indique les caractéristiques du paquet.
spécifier le hachage de propagation ( 41b95ec
dans le contexte de la mise à jour requirements.txt
):
package-one==1.9.4
git+git://github.com/path/to/package-two@41b95ec#egg=package-two
package-three==1.0.1
spécifier le nom de la succursale ( master
):
git+git://github.com/path/to/package-two@master#egg=package-two
spécifier l'étiquette ( 0.1
):
git+git://github.com/path/to/package-two@0.1#egg=package-two
spécifier la mainlevée ( 3.7.1
):
git+git://github.com/path/to/package-two@releases/tag/v3.7.1#egg=package-two
noter que #egg=package-two
n'est pas un commentaire ici, c'est à indiquer explicitement le nom du paquet
ce billet de blog a encore plus de discussions sur le sujet.
requirements.txt
permet les façons suivantes de spécifier une dépendance sur un paquet dans un dépôt git à partir de pip 7.0: 1
[-e] git+git://git.myproject.org/SomeProject#egg=SomeProject
[-e] git+https://git.myproject.org/SomeProject#egg=SomeProject
[-e] git+ssh://git.myproject.org/SomeProject#egg=SomeProject
-e git+git@git.myproject.org:SomeProject#egg=SomeProject
pour Github ce qui signifie que vous pouvez faire (notez l'omis -e
):
git+git://github.com/mozilla/elasticutils.git#egg=elasticutils
Pourquoi les extra réponse?
J'ai été quelque peu confus par le drapeau -e
dans les autres réponses donc voici ma clarification:
le drapeau -e
ou --editable
signifie que le colis est installé dans <venv path>/src/SomeProject
et donc pas dans le <venv path>/lib/pythonX.X/site-packages/SomeProject
profondément enfoui dans lequel il serait autrement placé. 2
Documentation
d'abord, installer avec git+git
. Exemple d'installation de la branche kronok
du projet brabeion
:
pip install -e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion
Deuxièmement, utilisez pip freeze > requirements.txt
pour obtenir la bonne chose dans votre requirements.txt
. Dans ce cas, vous obtiendrez
-e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion-master
troisième, tester le résultat:
pip uninstall brabeion
pip install -r requirements.txt
depuis pip v1.5
, (sorti le 1er janvier 2014: CHANGELOG , PR ) vous pouvez également spécifier un sous-répertoire d'un git repo pour contenir votre module. La syntaxe ressemble à ceci:
pip install -e git+https://git.repo/some_repo.git#egg=my_subdir_pkg&subdirectory=my_subdir_pkg # install a python package from a repo subdirectory
Note: en tant qu'auteur de module pip, idéalement, vous souhaiteriez probablement publier votre module dans son propre repo de haut niveau si vous le pouvez. Pourtant, cette fonctionnalité est utile pour certains répertoires pré-existants qui contiennent des modules python dans des sous-répertoires. Vous pourriez être forcé de les installer de cette façon si elles ne sont pas publiées à pypi aussi.