2015-09-04 51 views
9

当我运行pip freeze > requirements.txt时,它似乎包含所有已安装的软件包。这出现是记录的行为。仅针对项目需求的Pip冻结

但是,我做了一些错误的工作,因为现在Django包含了一些与Django没有业务关系的项目。

我该如何获得这个项目的需求?或将来如何安装pip用于此项目的软件包。我想我错过了一些关于virtualenv的内容。

+3

'pip'有没有办法理解,您的项目有,比如说,Django的没有生意。所以一般你想创建一个独立的虚拟环境而不需要访问系统站点包,并用'--isolated'标志运行pip来忽略'PYTHONPATH'中的东西。当然你不应该把软件包安装到你的项目所要求的环境以外 – Alik

+0

@Alik好吧,那就是我所害怕的。稍后我会研究创建虚拟环境。如果您想将此作为实际答案提交,我会接受它。 – ToothlessRebel

回答

2

我使用这个命令

pip freeze -r requirements.txt | grep -B100 "pip freeze" | grep -v "pip freeze" 

,当我跑pip freeze -r requirements.txt输出是一样的东西

APScheduler==3.2.0 
Eve==0.6.4 
Eve-Elastic==0.3.8 
## The following requirements were added by pip freeze: 
arrow==0.8.0 
Cerberus==0.9.2 

我有一个要求,文件中像这样

APScheduler 
Eve 
Eve-Elastic 

所以我得到这个输出和grep删除我不想要的依赖关系。

首页输出这一个文件

pip freeze -q -r requirements.txt | grep -B100 "pip freeze" | grep -v "pip freeze" > requirements-froze.txt 

这将输出只是版本库

APScheduler==3.2.0 
Eve==0.6.4 
Eve-Elastic==0.3.8 

然后更换需求文件

mv requirements.txt requirements.txt 
+0

我不得不考虑这一点,但我相信所有的要求都是通过'pip freeze'添加的,这意味着要搜索的行将是第一行。 – ToothlessRebel

14

pipreqs可以节省一天的具体项目。 只是

pip(3) install pipreqs 
#then 
pipreqs path/to/project 

See more from here