如何在VSCode中生成仅含项目导入库的requirements.txt文件?
生成仅包含项目已导入库的requirements.txt方法
方法一:手动整理(最直接)
根据你提供的导入语句,筛选出非Python标准库的依赖(pickle、warnings属于Python自带标准库,无需加入):
- numpy
- pandas
- matplotlib
- seaborn
- scipy
- scikit-learn(所有
sklearn开头的模块都归属这个包) - catboost
- xgboost
直接创建requirements.txt文件,写入以下内容(可按需添加版本号,比如你当前环境的对应版本):
numpy pandas matplotlib seaborn scipy scikit-learn catboost xgboost
方法二:用pipreqs工具自动扫描
- 先安装pipreqs工具:
pip install pipreqs
- 进入你的Jupyter Notebook所在的文件夹,执行命令:
pipreqs . --encoding=utf8
该工具会扫描目录下所有代码文件(包括.ipynb格式的笔记本),自动提取实际用到的第三方依赖,生成精准的requirements.txt,不会混入未使用的库。
方法三:用代码提取导入的依赖
如果不想额外安装工具,可以写一段简单代码扫描你的Notebook文件:
import json # 替换成你的Jupyter Notebook文件名 notebook_path = "你的笔记本文件名.ipynb" # 读取Notebook内容 with open(notebook_path, "r", encoding="utf-8") as f: nb_content = json.load(f) # 收集所有导入的库名 imported_libs = set() for cell in nb_content["cells"]: if cell["cell_type"] == "code": for line in cell["source"]: line = line.strip() if line.startswith("import ") or line.startswith("from "): # 提取根库名 if line.startswith("import "): lib = line.split()[1].split(".")[0] else: lib = line.split()[1].split(".")[0] imported_libs.add(lib) # 排除Python标准库 standard_libs = {"pickle", "warnings"} required_libs = imported_libs - standard_libs # 写入requirements.txt with open("requirements.txt", "w", encoding="utf-8") as f: for lib in sorted(required_libs): # 处理sklearn对应实际包名scikit-learn if lib == "sklearn": f.write("scikit-learn\n") else: f.write(f"{lib}\n")
运行这段代码后,就能得到仅包含你用到的第三方库的requirements.txt。
内容的提问来源于stack exchange,提问作者Mahammad Ojagzada
相关产品推荐
相关产品推荐

