我创建了一个环境,并通过git:
添加了一个包django-paramfield$ 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...
但是当我想创建一个需求文件时,我只看到包名:
$ pip freeze
paramfield==0.1
wsgiref==0.1.2
如何让它输出整个字符串git+https://bitbucket.org/DataGreed/django-paramfield.git
而不仅仅是包名?该软件包不在PyPi中。
UPD :也许,它必须对setup.py做些什么?我应该以某种方式改变它以反映回购网址吗?
UPD2 :我在stackoverflow中发现了相似的question,但作者不确定他是如何设法解决问题的,并且接受的答案没有给出好的提示不幸的是,虽然根据作者的评论判断它与setup.py文件有关。
UPD3 :我试图在setup.py中传递download_url
并通过此网址通过pip安装软件包,但问题仍然存在。
答案 0 :(得分:17)
一个简单但有效的解决方法是使用-e
标记pip install -e git+https://bitbucket.org/DataGreed/django-paramfield.git#egg=django-paramfield
安装包。
然后pip freeze
显示包的完整源路径。它不是应该在pip中修复的最佳方式,但它正在工作。权衡-e
(编辑标记)是pip将git / hg repo克隆到/path/to/venv/src/packagename
并运行python setup.py deploy
而不是将其克隆到临时目录并运行python setup.py install
并且在设置包之后删除临时目录。
答案 1 :(得分:3)
这是一个可以执行此操作的脚本:
#!/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()
答案 2 :(得分:1)
这是一个老问题,但我刚刚完成了同样的问题和决议 只需将repo的路径(在我的情况下为git)添加到需求fie而不是包名称
即
...
celery==3.0.19
# chunkdata isn't available on PyPi
https://github.com/aaronmccall/chunkdata/zipball/master
distribute==0.6.34
...
像在heroku上的魅力一样工作