I’ve created an environment and added a package django-paramfield via git:
$ 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...
But when i want to create a requirements file, i see only the package name:
$ pip freeze
paramfield==0.1
wsgiref==0.1.2
How can I make it output the whole string git+https://bitbucket.org/DataGreed/django-paramfield.git instead of just a package name? The package isn’t in PyPi.
UPD: perhaps, it has to do something with setup.py? Should I change it somehow to reflect repo url?
UPD2: I found quite a similar question in stackoverflow, but the author was not sure how did he manage to resolve an issue and the accepted answer doesn’t give a good hint unfortunately, though judging from the author’s commentary it has something to do with the setup.py file.
UPD3: I’ve tried to pass download_url in setup.py and installing package via pip with this url, but he problem persists.
A simple but working workaround would be to install the package with the
-eflag likepip install -e git+https://bitbucket.org/DataGreed/django-paramfield.git#egg=django-paramfield.Then
pip freezeshows the full source path of the package. It’s not the best way it should be fixed in pip but it’s working. The trade off-e(editing flag) is that pip clones the git/hg repo into/path/to/venv/src/packagenameand runpython setup.py deployinstead of clone it into a temp dir and runpython setup.py installand remove the temp dir after the setup of the package.