pip freeze 导出含有路径 (@ file:///) 问题小记

问题

conda 沙箱环境中使用 pip freeze > requirements.txt 命令导出已安装的模块,其中部分模块显示了 @ file:///...,而不是具体的版本号,如下图:

pip freeze 导出含有路径 (@ file:///) 问题小记_第1张图片
此时,如果我们直接在其他机器上边使用 pip install -r requirements.txt 安装模块时,就会遇到如下错误:

ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such
file or directory: 'C:\\ci\\cffi_1600699250966\\work'

原因

这是 pip 安装软件包的一种特殊语法(自19.1开始受支持)PEP404,
但是该此种路径取决于环境,file:///URL 仅在本地文件系统上可用,你不能将生成的 requirements.txt 文件提供给其他人使用

解决

当你遇到此类问题时,可以暂时考虑使用如下命令生成 requirements.txt 文件

pip list --format=freeze > requirements.txt

使用上述命令导出的文件中,会包含如下几个包:distributepipsetuptoolswheel,建议手动删除!

参考

  • pip requirements file contain “@file” instead of version number?
  • pip-freeze-generating-file-on-conda-environment
  • pip freeze does not show version for in-place installs

你可能感兴趣的:(Python,经验分享,python,pip)