使用pip freeze命令查看带有一些本地文件位置的requirements文件

9 浏览
0 Comments

使用pip freeze命令查看带有一些本地文件位置的requirements文件

使用以下命令生成一些要求,但结果包含了一些本地文件位置。如何避免它们?\n

pip freeze > requirements.txt

\n我不想要那个 \"@file:///home/conda/feedstock_root/build_artifacts/attrs_1620387926260/work\" 的部分。

0
0 Comments

问题的原因是需要将使用pip安装的Python包及其版本号保存到一个文本文件中,以便将来可以使用相同的依赖关系来重现环境。在这种情况下,使用pip freeze命令可以获得当前环境中已安装的所有包及其版本号。然而,有时候我们可能希望在requirements.txt文件中包含一些本地文件的位置,以便可以将其作为依赖项进行安装。

要解决这个问题,我们可以使用以下代码来获取pip freeze命令的输出,并过滤掉包含"@"符号的行:

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)

这段代码使用了subprocess模块来运行pip freeze命令,并将其输出解码为字符串。然后,使用split函数将输出分割为多行,并使用filter函数过滤掉包含"@"符号的行。最后,将结果打印出来。

接下来,我们可以将过滤后的结果写入到一个名为requirements_test.txt的文件中,以便以后使用。可以使用以下代码完成这个任务:

fname = 'requirements_test.txt'
with open(fname, mode='w', encoding='utf8') as f:
    for row in result:
        f.write(row + '\n')

这段代码使用了open函数打开一个文件,并以写入模式打开它。然后,使用一个循环将过滤后的结果逐行写入文件中。

这样,我们就可以将使用pip freeze命令获取的Python包及其版本号保存到requirements_test.txt文件中,以便以后可以使用相同的依赖关系来重现环境。

0
0 Comments

当使用pip freeze命令将当前Python环境中安装的所有包及其版本号导出到requirements.txt文件时,有时候会出现一些本地文件路径的问题。

问题的原因是,pip freeze命令默认会将所有的包及其版本号输出到requirements.txt文件中。这意味着,如果某个包是从本地文件路径安装的,那么它的安装路径将会被记录在requirements.txt文件中。

这样一来,当其他人或其他环境尝试使用requirements.txt文件来安装相同的依赖时,由于本地文件路径不同,可能无法正确安装这些依赖。

为了解决这个问题,可以使用pip list命令配合--format=freeze参数来生成requirements.txt文件,而不是使用pip freeze命令。具体的解决方法如下:

pip list --format=freeze > requirements.txt

通过以上命令,将会生成一个不包含本地文件路径的requirements.txt文件。这样,其他人或其他环境使用该文件安装依赖时,就不会再因为本地文件路径不同而导致安装失败的问题。

希望以上方法能够帮助您解决pip freeze命令中本地文件路径导致的问题。

0