2012-07-19 5 views
18

Ich habe ein Umfeld geschaffen, und ein Paket django-paramfield via git hinzugefügt:Pip freeze zeigen keine Repository-Pfade für Anforderungen Datei

$ pip install git+https://bitbucket.org/DataGreed/django-paramfield.git 
Downloading/unpacking git+https://bitbucket.org/DataGreed/django-paramfield.git 
    Cloning https://bitbucket.org/DataGreed/django-paramfield.git to /var/folders/9Z/9ZQZ1Q3WGMOW+JguzcBKNU+++TI/-Tmp-/pip-49Eokm-build 
Unpacking objects: 100% (29/29), done. 
    Running setup.py egg_info for package from git+https://bitbucket.org/DataGreed/django-paramfield.git 
Installing collected packages: paramfield 
    Running setup.py install for paramfield 
Successfully installed paramfield 
Cleaning up... 

Aber wenn ich eine Anforderungsdatei erstellen möchten, sehe ich nur die Paketname:

$ pip freeze 
paramfield==0.1 
wsgiref==0.1.2 

Wie kann ich es machen Ausgabe die gesamte Zeichenkette git+https://bitbucket.org/DataGreed/django-paramfield.git statt nur ein Paketname? Das Paket ist nicht in PyPi.

UPD: hat es vielleicht etwas mit setup.py zu tun? Sollte ich es irgendwie ändern, um Repo URL zu reflektieren?

UPD2: Ich fand eine recht ähnliche question in Stackoverflow, aber der Autor war nicht sicher, wie schaffte er es ein Problem zu beheben und die akzeptierte Antwort nicht geben einen guten Hinweis leider, obwohl der Kommentar des Autors zu urteilen Es hat etwas mit der Datei setup.py zu tun.

UPD3: Ich habe versucht, download_url in setup.py zu übergeben und Paket über Pip mit dieser URL zu installieren, aber er bleibt bestehen.

+0

klingt, als ob dies ein Fehler in pip oder eine Auslassung in ihrer Dokumentation. Sagen Sie ihnen https://github.com/pypa/pip/issues –

+0

danke, ich habe ein Problem eingereicht - https://github.com/pypa/pip/issues/609 – DataGreed

Antwort

17

Eine einfache, aber Abhilfe Arbeit wäre das Paket mit der -e Flagge wie pip install -e git+https://bitbucket.org/DataGreed/django-paramfield.git#egg=django-paramfield zu installieren.

Dann zeigt pip freeze den vollständigen Quellpfad des Pakets. Es ist nicht der beste Weg, wie es in Pip behoben werden sollte, aber es funktioniert. Die Abwägung -e (Bearbeitungsflag) ist, dass Pip klont die git/hg Repo in /path/to/venv/src/packagename und python setup.py deploy laufen statt klonen es in ein temporäres Verzeichnis und führen Sie python setup.py install und entfernen Sie die temporäre Verzeichnis nach der Einrichtung des Pakets.

+0

Danke, das ist wirklich eine mögliche Problemumgehung, aber ich glaube, die richtige Syntax dafür ist Pip installieren -e Git + https: //bitbucket.org/DataGreed /django-paramfield.git#egg=paramfield - aber was genau macht -e flag? Geben Sie ein Verzeichnis an, um das Paket zu installieren. – DataGreed

3

Hier ist ein Skript, das das tun:

#!/usr/bin/env python 

from subprocess import check_output 
from pkg_resources import get_distribution 

def download_url(package): 
    dist = get_distribution(package) 
    for line in dist._get_metadata('PKG-INFO'): 
     if line.startswith('Download-URL:'): 
      return line.split(':', 1)[1] 


def main(argv=None): 
    import sys 
    from argparse import ArgumentParser 

    argv = argv or sys.argv 

    parser = ArgumentParser(
     description='show download urls for installed packages') 
    parser.parse_args(argv[1:]) 

    for package in check_output(['pip', 'freeze']).splitlines(): 
     print('{}: {}'.format(package, download_url(package) or 'UNKNOWN')) 


if __name__ == '__main__': 
    main() 
+0

, aber warum pip freeze macht das nicht? Normalerweise zeigt es Repo-URLs – DataGreed

+0

sollte es eine einfachere Möglichkeit, das klar zu tun – DataGreed

1

Dies ist eine alte Frage, aber ich habe gerade durch dieses gleiche Problem und die Auflösung Fügen Sie einfach den Pfad zum Repo (git in meinem Fall) auf die Anforderungen FIE anstelle des Paketnamen

dh

gearbeitet
... 
celery==3.0.19 
# chunkdata isn't available on PyPi 
https://github.com/aaronmccall/chunkdata/zipball/master 
distribute==0.6.34 
... 

wie ein Charme deplying auf Heroku

+0

sicher, es ist im Grunde das gleiche wie die angenommene Antwort - Pip Freeze wird eine ähnliche Linie erzeugen;) – DataGreed

+0

oder 'git + https: // github.com/aaronmccall/chunkdata.git' – Rockallite