Windows下使用 PyCharm 通过 SSH 远程连接 Linux 虚拟机的 Conda 环境,进行 Pyomo 建模与 GLPK 求解优化开发时遇到的问题
记录一下自己开发中遇到的问题,回顾一下在Pycharm中进行远程开发的步骤。
环境配置
首先拿到environment.yml,在虚拟机中安装好conda虚拟环境
conda env create -n 自定义环境名 -f environment.yml
安装完了验证一下
首先进到设置中,增加一个SFTP开发环境,没有SSH配置就新建一个
测试是否连通
配置映射项目路径,项目的映射会存在虚拟机该路径下
配置代码自动上传同步
增加python运行环境,也可以在右下角进入,
选择SSH Interpreter,选择刚才创建的SSH环境,下一步
选择虚拟机中虚拟环境的python解释器,一般路径在 anaconda3/envs/xxx/bin/python,下方Sync folders和前面的映射文件夹保持一致
配置fastapi项目运行配置
这里有一个至关重要的参数!!!一定要在环境变量中加入,原因在最后面说,至此配置完成。
PATH=/home/zzr/miniconda3/envs/xxx/bin:$PATH
pyomo无法找到glpk求解器
在运行一段需要使用到glpk求解器的代码的时候始终无法执行glpk,尝试了各种方法包括指定地址等
@router.get("/solve_test")
async def test_solver():
from pyomo.environ import SolverFactory
solver = SolverFactory("glpk", executable="/home/zzr/miniconda3/envs/hbtrade/bin/glpsol")
print("Solver Path:", solver.executable())
print("Solver Available:", solver.available(exception_flag=True))
可以看到下面绝对有glpsol执行文件,执行glpsol --help也没有问题。
后来发现如果在虚拟机命令行中手动激活虚拟环境,再执行代码不会有任何问题,找到原因是如果远程ssh开发直接调用虚拟环境的python解释器,会无法继承系统的环境变量导致,所以上面那条环境变量至关重要!
PATH=/home/zzr/miniconda3/envs/hbtrade/bin:$PATH:
把 hbtrade 的 bin 目录放在 PATH 的最前面,这样当运行 python、pip 或 glpsol 时,系统会优先使用 hbtrade 环境下的版本,而不是系统默认的 Python 或其他工具。