本地Conda环境中Optapy运行报错:OSError: could not get source code
解决Optapy运行时“OSError: could not get source code”报错
可能原因及修复步骤
Conda环境字节码编译干扰:Conda默认的字节码优化或缓存会影响Optapy的源码读取逻辑
- 关闭Python字节码优化:运行脚本前执行
export PYTHONOPTIMIZE=0(Linux/macOS)或set PYTHONOPTIMIZE=0(Windows) - 清除已生成的字节码缓存:删除项目目录下的
__pycache__文件夹,执行命令:rm -rf __pycache__(Linux/macOS)或rmdir /s __pycache__(Windows)
- 关闭Python字节码优化:运行脚本前执行
版本兼容性问题:Optapy版本与Python3.9不匹配可能触发该错误
- 安装适配Python3.9的Optapy版本:执行
pip install optapy==8.32.0.Final(该版本明确支持Python3.9) - 重装Optapy及核心依赖:
pip uninstall -y optapy optapy-core pip install optapy
- 安装适配Python3.9的Optapy版本:执行
JAVA_HOME未在Conda环境内生效:系统级配置可能未同步到Conda隔离环境
- 验证环境内JAVA_HOME:激活Conda环境后执行
echo $JAVA_HOME(Linux/macOS)或echo %JAVA_HOME%(Windows),确认指向JDK17目录 - 手动在Conda环境中配置:
- Linux/macOS:编辑
$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh,添加export JAVA_HOME=/你的JDK17路径 - Windows:编辑
%CONDA_PREFIX%\etc\conda\activate.d\env_vars.bat,添加set JAVA_HOME=C:\你的JDK17路径
- Linux/macOS:编辑
- 验证环境内JAVA_HOME:激活Conda环境后执行
脚本路径/权限问题:特殊路径或权限限制会导致源码读取失败
- 确保脚本所在目录无中文、空格等特殊字符,路径尽量简洁
- 修复文件权限:Linux/macOS执行
chmod +x 你的脚本名.py,Windows确保当前用户有读写权限
验证方法
修复后运行以下极简测试脚本确认问题是否解决:
from optapy import planning_solution, planning_entity, planning_variable, solver_factory_create @planning_entity class TestEntity: def __init__(self, value=None): self.value = value @planning_variable(str, ["X", "Y"]) def get_value(self): return self.value def set_value(self, value): self.value = value @planning_solution class TestSolution: def __init__(self, entity_list=None): self.entity_list = entity_list def get_entity_list(self): return self.entity_list solver = solver_factory_create().buildSolver() result = solver.solve(TestSolution([TestEntity()])) print(result.get_entity_list()[0].get_value())
内容的提问来源于stack exchange,提问作者vctrgv
相关产品推荐
相关产品推荐

