多Python/pip版本环境下PyFoam安装运行报错的解决方法
PyFoam安装后运行报错(pip与Python版本不匹配)解决方法
问题现象
按照PyPI上PyFoam项目的安装指引,执行pip install PyFoam完成安装后,运行pyFoamVersion.py等相关脚本时报错,核心报错信息为:
Traceback (most recent call last): File "/usr/local/bin/pyFoamClearCase.py", line 4, in <module> __import__('pkg_resources').run_script('PyFoam==2021.6', 'pyFoamClearCase.py') File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3251, in <module> @_call_aside File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3235, in _call_aside f(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3264, in _initialize_master_working_set working_set = WorkingSet._build_master() File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 583, in _build_master ws.require(__requires__) File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 900, in require needed = self.resolve(parse_requirements(requirements)) File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 786, in resolve raise DistributionNotFound(req, requirers) pkg_resources.DistributionNotFound: The 'PyFoam==2021.6' distribution was not found and is required by the application
执行环境版本检查得到以下结果:
pip --version返回:pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)python --version返回:Python 2.7.18
故障根因:当前环境中pip关联的是Python3.8解释器,执行安装命令时PyFoam被安装到Python3.8的第三方包目录下,但系统默认调用的Python解释器是2.7版本,运行脚本时在Python2.7的包路径下找不到对应安装包,触发DistributionNotFound报错。
解决方法
可根据自身使用需求选择以下任意一种方案处理:
- 方案1:适配Python2.7环境安装PyFoam
先通过系统包管理器为Python2.7安装对应pip,以Debian/Ubuntu系统为例执行:sudo apt install python-pip
安装完成后执行以下命令安装Python2兼容版本的PyFoam:pip2 install PyFoam==2019.12
注:2021.6及更新版本的PyFoam已不再支持Python2.7,必须安装2019.12及更早的兼容版本才能在Python2.7环境下正常运行。 - 方案2:统一全局环境为Python3版本
如果不需要保留Python2.7作为默认解释器,直接调整软链接让默认python、pip命令都指向Python3版本即可:
调整完成后重新执行sudo ln -sf /usr/bin/python3 /usr/bin/python sudo ln -sf /usr/bin/pip3 /usr/bin/pippip install PyFoam,安装完成后即可正常运行相关脚本。如果不想修改全局默认解释器,也可以在运行脚本时显式指定Python3解释器,例如python3 /usr/local/bin/pyFoamVersion.py。 - 方案3:虚拟环境隔离依赖(推荐)
不想改动系统全局Python配置的话,可以创建独立虚拟环境使用PyFoam,避免多版本依赖冲突:
激活虚拟环境后所有PyFoam相关命令都可以正常运行,退出虚拟环境执行# 创建Python3虚拟环境 python3 -m venv pyfoam_env # 激活虚拟环境 source pyfoam_env/bin/activate # 虚拟环境内安装PyFoam pip install PyFoamdeactivate命令即可回到系统全局环境。
内容的提问来源于stack exchange,提问作者Yana
相关产品推荐
相关产品推荐

