我可以告诉pip忽略通过`setup.py develop`安装的需求吗?

时间:2014-04-22 13:29:40

标签: python pip virtualenv

我正在研究一个Python库,我已经安装在我的本地virtualenv中进行测试。我有几个与pip一起安装的依赖项。当我做的时候

$ pip freeze > requirements.txt

它添加了我当前的项目:

-e git+git@github.com:path/to/my/project@somehash#egg=lib-master

我必须手动删除 - 我的项目实际上并不依赖于自己。是否可以将参数传递给pip,上面写着“嘿,忽略这个/这些类型的包?”

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是将pip freeze的结果与-v(反向匹配)一起传递给grep

pip freeze | grep -v 'project_name' > requirements.txt

演示:

$ mkvirtualenv test
New python executable in test/bin/python
Installing Setuptools...done.
Installing Pip...done.
(test)$ pip freeze
wsgiref==0.1.2
(test)$ pip install requests
Downloading/unpacking requests
  Downloading requests-2.2.1.tar.gz (421kB): 421kB downloaded
  Running setup.py egg_info for package requests

Installing collected packages: requests
  Running setup.py install for requests

Successfully installed requests
Cleaning up...
(test)$ pip freeze
requests==2.2.1
wsgiref==0.1.2
(test)$ pip freeze | grep -v 'requests'
wsgiref==0.1.2
(test)$ pip freeze | grep -v 'requests' > requirements.txt
(test)$ cat requirements.txt 
wsgiref==0.1.2

另见:Negative matching using grep (match lines that do not contain foo)

希望有所帮助。

答案 1 :(得分:0)

这是错误的问题。您不应该根据当前安装的内容尝试建立要求。您的项目应指定其要求,并根据此信息(和要求的要求)计算最终的要求。请注意,应根据需要指定开发要求,以便可以根据需要单独安装 - 请参阅Setuptools “development” RequirementsHow to customize a requirements.txt for multiple environments?。 不幸的是,pip无法计算此yet。您可以使用pip-tools计算此值,该结果会将结果写入 requirements.txt 文件。有关如何使用 pip-tools 的完整示例,请参阅我的answer