运行CodeGen仓库时遇packaging模块缺失错误,求解决方法
解决CodeGen安装中"ModuleNotFoundError: No module named 'packaging'"问题
问题描述
我在Windows和Ubuntu系统中运行CodeGen仓库的install_env.sh脚本里的以下命令时,均遇到相同错误:
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
我已经确认packaging库已安装,且尝试过卸载重装,但仍提示ModuleNotFoundError: No module named 'packaging'错误。
错误信息(中文翻译)
使用pip版本23.1.2,路径:/home/meghna/miniconda3/envs/codegen_3_10/lib/python3.10/site-packages/pip (python 3.10) DEPRECATION: --build-option 和 --global-option 已被弃用。pip 23.3将强制执行此行为变更。可考虑使用--config-settings替代,讨论地址:https://github.com/pypa/pip/issues/11859 警告:因存在--build-option / --global-option,默认启用--no-binary=:all:。 处理路径:/home/meghna/CodeGen/apex 运行pip子进程以安装构建依赖 收集setuptools 使用缓存的setuptools-68.0.0-py3-none-any.whl 收集wheel 使用缓存的wheel-0.40.0-py3-none-any.whl 安装收集到的包:wheel, setuptools 成功安装setuptools-68.0.0 wheel-0.40.0 安装构建依赖完成 运行命令:获取构建wheel所需的依赖 回溯(最近的调用先显示): 文件 "/home/meghna/miniconda3/envs/codegen_3_10/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", 第353行, in <module> main() 文件 "/home/meghna/miniconda3/envs/codegen_3_10/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", 第335行, in main json_out['return_val'] = hook(**hook_input['kwargs']) 文件 "/home/meghna/miniconda3/envs/codegen_3_10/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", 第118行, in get_requires_for_build_wheel return hook(config_settings) 文件 "/tmp/pip-build-env-tznejqwh/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", 第341行, in get_requires_for_build_wheel return self._get_build_requires(config_settings, requirements=['wheel']) 文件 "/tmp/pip-build-env-tznejqwh/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", 第323行, in _get_build_requires self.run_setup() 文件 "/tmp/pip-build-env-tznejqwh/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", 第338行, in run_setup exec(code, locals()) 文件 "<string>", 第4行, in <module> ModuleNotFoundError: No module named 'packaging' error: subprocess-exited-with-error × 获取构建wheel所需依赖的命令未成功运行。 │ 退出码: 1 ╰─> 查看上方输出了解详情。 note: 此错误源自子进程,大概率与pip无关。 完整命令: /home/meghna/miniconda3/envs/codegen_3_10/bin/python /home/meghna/miniconda3/envs/codegen_3_10/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py get_requires_for_build_wheel /tmp/tmpnoh7u27d 当前工作目录: /home/meghna/CodeGen/apex 获取构建wheel所需依赖...错误 error: subprocess-exited-with-error × 获取构建wheel所需依赖的命令未成功运行。 │ 退出码: 1 ╰─> 查看上方输出了解详情。 note: 此错误源自子进程,大概率与pip无关。
解决方案
1. 确保构建环境包含packaging
pip安装本地包时会创建临时构建环境,主环境的packaging不会自动同步过去,可通过以下方式解决:
- 先强制重装packaging,再执行安装命令:
pip install packaging --force-reinstall pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
- 适配新版pip,用
--config-settings替代已弃用的--global-option:
pip install -v --disable-pip-version-check --no-cache-dir --config-settings="--cpp_ext" --config-settings="--cuda_ext" ./
2. 检查环境一致性
- 确认pip和Python路径匹配,执行以下命令验证:
which python which pip
- 如果使用conda环境,先激活目标环境再操作:
conda activate codegen_3_10 pip install packaging --force-reinstall pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
3. 修改Apex的setup.py
错误源自CodeGen子模块Apex的安装,找到CodeGen/apex/setup.py,在开头添加以下代码,强制安装packaging:
import sys try: import packaging except ImportError: import subprocess subprocess.check_call([sys.executable, "-m", "pip", "install", "packaging"]) import packaging
保存后重新运行安装命令即可。
内容的提问来源于stack exchange,提问作者Meg
相关产品推荐
相关产品推荐

