python - 如何在 virtualenv 中修改 pip?

标签 python pip virtualenv

我正在尝试修改 pip,以便在每次安装或卸载后,我的 requirements.txt 都会得到更新。

为此,我修改了虚拟环境的 bin/ 中的 pip 文件。

pip :

#!/Users/username/ProjectEnv/bin/python3

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    status = main()
    if status == 0 or status is None:
        sys.argv = ['pip', 'freeze', '>', '../Project/requirements.txt']
        sys.exit(main())

这不起作用。我尝试过打印命令行参数并设置断 pip ,但效果不佳。

pip :

#!/Users/username/ProjectEnv/bin/python3

# -*- coding: utf-8 -*-
import re
import sys
import pdb
pdb.set_trace()

from pip import main

if __name__ == '__main__':
    for arg in sys.argv:
        print(arg)
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    status = main()
    if status == 0 or status is None:
        sys.argv = ['pip', 'freeze', '>', '../Project/requirements.txt']
        sys.exit(main())

我在这里做错了什么?

最佳答案

您可以自己在 pip 库上调用 freeze 方法。它将返回一个生成器,该生成器为您提供在 pip --freeze 中打印到屏幕的逐行输出。

from pip.operations import freeze

packages = freeze.freeze()
with open('../Project/requirements.txt', 'w') as f:
    for x in packages:
        f.write(x)
        f.write('\n')

关于python - 如何在 virtualenv 中修改 pip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41649507/

相关文章:

python - 如何监控 Gensim LDA 模型的收敛性?

python - 当我运行manage.py时如何修复这些错误

Python + Django + VirtualEnv + Windows

python - 如何使用 imaplib 获取 'Message-ID'

python - 获取 xarray 数据集中的键列表

python - 运行 pip install - 在 Windows 机器上。由于网络代理导致证书错误

python - 使用 `pip` 维护 Python 包的最安全方法是什么?

带有 -m 的 Python 脚本完成但最后出错

python - 如何使用 Google BigQuery python API 获得超过 100,000 个响应结果?

python - pip 命令什么都不做