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

Way*_*ner 5 python pip virtualenv

我正在开发一个 Python 库,该库已安装在我的本地 virtualenv 中以进行测试。我有几个使用 pip 安装的依赖项。当我做

$ pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

它添加了我当前的项目,如下所示:

-e git+git@github.com:path/to/my/project@somehash#egg=lib-master
Run Code Online (Sandbox Code Playgroud)

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

ale*_*cxe 1

pip freeze最简单的解决方案是将to的结果grep通过管道传输-v(invert-match):

pip freeze | grep -v 'project_name' > requirements.txt
Run Code Online (Sandbox Code Playgroud)

演示:

$ 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
Run Code Online (Sandbox Code Playgroud)

另请参阅:使用 grep 进行负匹配(匹配不包含 foo 的行)

希望有帮助。