You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何pip freeze未生成依赖?Python3.9(Mac)环境使用疑问

问题解析与解决办法

你对pip freeze的用法确实有误解

pip freeze本身是用来输出当前Python环境(全局/虚拟环境)中已安装的所有包及其版本,直接重定向到文件才是生成requirements的正确方式,比如:

python3 -m pip freeze > requirements.txt

而你用的pip freeze -r piptest.txt,这个-r参数的作用是读取指定的requirements文件,然后输出当前环境中不在这个文件里的包——你创建了空的piptest.txt,加上你之前是把依赖装到./package目录而非全局环境,当前全局环境里根本没有那些新依赖,所以输出为空,文件自然还是空的。

为什么你的操作拿不到新依赖?

你之前用python3 -m pip install --target ./package -r requirements.txt,这个命令是把依赖安装到指定的./package目录,而不是当前Python环境的全局站点包目录。pip freeze默认只会扫描全局(或虚拟环境)的已安装包,不会去读./package里的内容,所以自然识别不到你新增的依赖。

正确更新requirements.txt的方法

方法1:从已安装的target目录生成

如果已经把新依赖装到./package了,直接用pip list指定target目录来生成:

python3 -m pip list --format=freeze --target ./package > updated_requirements.txt

方法2:用虚拟环境(推荐)

虚拟环境能避免全局环境依赖混乱,步骤如下:

  • 创建虚拟环境:
    python3 -m venv .venv
    
  • 激活虚拟环境:
    source .venv/bin/activate
    
  • 安装原有依赖:
    pip install -r requirements.txt
    
  • 安装新增的依赖:
    pip install 你的新库名
    
  • 生成新的requirements:
    pip freeze > requirements.txt
    

方法3:扫描代码自动生成(适合未提前安装依赖的情况)

用pipreqs工具扫描项目代码里的import语句,自动生成依赖列表:

  • 先全局安装pipreqs:
    python3 -m pip install pipreqs
    
  • 扫描项目根目录生成:
    pipreqs ./ --force --encoding=utf-8
    

(--force用于覆盖现有requirements.txt,--encoding解决中文注释编码问题)

内容的提问来源于stack exchange,提问作者hotmeatballsoup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:15:05