我正在研究一个Python库,我已经安装在我的本地virtualenv中进行测试。我有几个与pip一起安装的依赖项。当我做的时候
$ pip freeze > requirements.txt
它添加了我当前的项目:
-e git+git@github.com:path/to/my/project@somehash#egg=lib-master
我必须手动删除 - 我的项目实际上并不依赖于自己。是否可以将参数传递给pip,上面写着“嘿,忽略这个/这些类型的包?”
答案 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” Requirements和How to customize a requirements.txt for multiple environments?。 不幸的是,pip无法计算此yet。您可以使用pip-tools计算此值,该结果会将结果写入 requirements.txt 文件。有关如何使用 pip-tools 的完整示例,请参阅我的answer。