You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Conda环境中Optapy运行报错:OSError: could not get source code

解决Optapy运行时“OSError: could not get source code”报错

可能原因及修复步骤

  • Conda环境字节码编译干扰:Conda默认的字节码优化或缓存会影响Optapy的源码读取逻辑

    1. 关闭Python字节码优化:运行脚本前执行export PYTHONOPTIMIZE=0(Linux/macOS)或set PYTHONOPTIMIZE=0(Windows)
    2. 清除已生成的字节码缓存:删除项目目录下的__pycache__文件夹,执行命令:rm -rf __pycache__(Linux/macOS)或rmdir /s __pycache__(Windows)
  • 版本兼容性问题:Optapy版本与Python3.9不匹配可能触发该错误

    1. 安装适配Python3.9的Optapy版本:执行pip install optapy==8.32.0.Final(该版本明确支持Python3.9)
    2. 重装Optapy及核心依赖:
      pip uninstall -y optapy optapy-core
      pip install optapy
      
  • JAVA_HOME未在Conda环境内生效:系统级配置可能未同步到Conda隔离环境

    1. 验证环境内JAVA_HOME:激活Conda环境后执行echo $JAVA_HOME(Linux/macOS)或echo %JAVA_HOME%(Windows),确认指向JDK17目录
    2. 手动在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路径
  • 脚本路径/权限问题:特殊路径或权限限制会导致源码读取失败

    1. 确保脚本所在目录无中文、空格等特殊字符,路径尽量简洁
    2. 修复文件权限: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:55:04