具有某些本地文件位置的 pip 冻结要求

pip freeze requirements with some local file location

pip freeze > requirements.txt

我用这个命令生成了一些需求,但是结果带有一些本地文件位置。如何避免它们?

absl-py @ file:///home/conda/feedstock_root/build_artifacts/absl-py_1637088766493/work
aiohttp @ file:///D:/bld/aiohttp_1637087223487/work
aiosignal @ file:///home/conda/feedstock_root/build_artifacts/aiosignal_1636093929600/work
albumentations==1.1.0
async-timeout @ file:///home/conda/feedstock_root/build_artifacts/async-timeout_1637092647930/work
attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1620387926260/work
autopep8==1.6.0
backcall==0.2.0

我不想要的“@file:///home/conda/feedstock_root/build_artifacts/attrs_1620387926260/work”。

我会尝试以下方法:

pip list --format=freeze > requirements.txt

编辑:不应将此方法用作答案,但在处理更复杂的情况下可能会有用。

为什么不尝试编写这种过滤的代码?

看看下面的代码:

import subprocess

output = subprocess.check_output(['pip', 'freeze']).decode().split('\r\n')
result = list(filter(lambda x: False if '@' in x else True, output))
print(result)
fname = 'requirements_test.txt'
with open(fname, mode='w', encoding='utf8') as f:
    for row in result:
        f.write(row + '\n')