【问题标题】:Python 3.7 cannot use DOCPLEXPython 3.7 不能使用 DOCPLEX
【发布时间】:2021-04-15 23:08:30
【问题描述】:

我编写了一个数学模型并想使用 DOCPLEX 模块来解决它。我的解释器是 Python 3.7。但是,在做了很多努力之后,我会遇到以下错误:

Traceback (most recent call last):
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 290, in get_cplex_module
    import cplex  #@UnresolvedImport
  File "C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python\3.8\x64_win64\cplex\__init__.py", line 44, in <module>
    from .aborter import Aborter
  File "C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python\3.8\x64_win64\cplex\aborter.py", line 13, in <module>
    from ._internal import _procedural as _proc
  File "C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python\3.8\x64_win64\cplex\_internal\__init__.py", line 20, in <module>
    from . import _list_array_utils
  File "C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python\3.8\x64_win64\cplex\_internal\_list_array_utils.py", line 14, in <module>
    from . import _pycplex as CPX
  File "C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python\3.8\x64_win64\cplex\_internal\_pycplex.py", line 13, in <module>
    from . import _pycplex_platform
  File "C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python\3.8\x64_win64\cplex\_internal\_pycplex_platform.py", line 22, in <module>
    from cplex._internal.py37_cplex2010 import *
ModuleNotFoundError: No module named 'cplex._internal.py37_cplex2010'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/xxx/PycharmProjects/pythonProject/EPC _LTC.py", line 11, in <module>
    mdl = Model("LTC")
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\model.py", line 398, in __init__
    self._environment = self._make_environment()
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\model.py", line 174, in _make_environment
    env = Environment.get_default_env()
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 427, in get_default_env
    Environment._default_env = Environment.make_new_configured_env()
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 422, in make_new_configured_env
    return Environment(start_auto_configure=True)
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 84, in __init__
    self.auto_configure(logger=logger)
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 220, in auto_configure
    self.check_cplex(logger=logger)
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 328, in check_cplex
    cplex = self.get_cplex_module(logger=logger)
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 314, in get_cplex_module
    cplex = load_cplex_from_cos_root(loc) if loc else None
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 286, in load_cplex_from_cos_root
    return load_cplex(full_path, version=version)
  File "C:\Users\xxx\PycharmProjects\pythonProject\venv\lib\site-packages\docplex\mp\environment.py", line 261, in load_cplex
    raise FileNotFoundError("Could not load module from %s" % module_location)
FileNotFoundError: Could not load module from C:\Program Files\IBM\ILOG\CPLEX_Studio201;C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python\3.7\x64_win64;C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python\3.7\x64_win64\cplex;\cplex\python\3.7\x64_win64\cplex\__init__.py

我已经在 Pycharm 的终端中运行了以下代码:

cd C:\Program Files\IBM\ILOG\CPLEX_Studio201\python
python setup.py install

cd C:\Program Files\IBM\ILOG\CPLEX_Studio201\python
python setup.py install --home C:\Users\xxx\PycharmProjects\pythonProject\venv\Lib\site-packages\cplex

最后,我还将自己用户名的路径变量设置为如下所示:

"C:\Program Files\IBM\ILOG\CPLEX_Studio129\cplex\python\3.6\x64_win64" and
"C:\Program Files\IBM\ILOG\CPLEX_Studio129\cplex\bin\x64_win64\cplex.exe"

【问题讨论】:

    标签: python docplex


    【解决方案1】:

    就我而言,我升级到 python 3.8 并解决了问题

    或者你可以使用这个:

    pip install docplex==2.15.194
    

    【讨论】:

    • 我认为 docplex 与 Python 3.8 不兼容。不管怎样,我刚刚升级到这个新版本,仍然存在同样的问题。
    • "pip install docplex==2.15.194" 工作!!非常感谢。
    • 再次,我遇到另一个错误“docplex.mp.utils.DOcplexException: CPLEX runtime not found: please install CPLEX or solve this model on DOcplexcloud”
    • 从我看到的堆栈来看,Python 3.8 和 3.7 之间似乎存在混淆。 Python/cplex 层的根目录内容应与解释器版本一致。我提到的是3.7。如果使用 3.8,则必须更改它。
    • 另外,我看到你已经安装了 Python 模块“cplex”。如果您安装了 COS,则不需要这样做,相反,这可能会造成混淆。您应该将“docplex”包从 pypi 更新到最新的 2.20 版本,并通过 Pycharm 中的内容根目录让它知道您的 COS 安装。 cplex 模块包含有限版本的 CPLEX(1000 个变量,1000 个约束),如果您有 COS,则不需要。
    【解决方案2】:

    问题在于python setup.py install 不保证您使用的python 解释器与您的虚拟环境相同。

    您需要在运行安装脚本之前激活您的环境。 请打开终端然后运行:

    C:\Users\xxx\PycharmProjects\pythonProject\venv\Scripts\activate
    

    那你就可以了

    cd C:\Program Files\IBM\ILOG\CPLEX_Studio201\cplex\python
    pip install .
    

    【讨论】:

    • 非常感谢。我只是按照你说的做了,但仍然存在同样的错误。请看下图。请帮助我,因为这个问题我已经停止了我的论文项目。 ibb.co/NCHKn1n
    【解决方案3】:

    Docplex 有一个check_list.py 脚本,可帮助诊断 cplex 版本的存在和位置。在存在 Python 的终端中,键入

    $ python -m docplex.mp.check_list
    

    答案如下:

    * system is: Windows 64bit
    * Python version 3.7.8, located at: C:\python\anaconda2020.02\envs\docplex37\python.exe
    * docplex is present, version is 2.20.204
    * CPLEX library is present, version is 12.10.0.0, located at: C:\OPTIM\cplex_distrib\cplex1210R0\python\3.7\x64_win64
    * pandas is present, version is 1.1.4
    

    【讨论】:

    • 感谢您的帮助。我按照你说的做了,我得到了类似下图的东西。应该是什么问题? ibb.co/KLVpVsx
    【解决方案4】:

    从您发布的检查列表输出中,我可以看到您安装了 cos201。 在您的情况下,Docplex 需要位于 cos 内部的 Python/Cplex 接口:

    C:/Program Files/IBM/ILOG/CPLEX_Studio201/cplex/python/3.7/x64_win64
    

    此路径应作为content root 添加到您的 Pycharm 项目中(文件/设置/项目结构 -> 添加内容根目录

    要检查这一点,请在 Pycharm 中打开 Python 控制台选项卡,然后尝试

    import cplex
    

    添加正确的路径后,这应该可以工作。 然后,您可以从控制台中运行检查列表:

    from docplex.mp.check_list import run_docplex_check_list
    run_docplex_check_list()
    

    一旦成功,您的程序应该可以在 Pycharm 中解决问题。 这就是说,我看到您的 docplex 版本是 2.15,比 CPLEX 20.1 旧。您应该将 DOcplex 更新到与 CPLEX 20.1 兼容的最新版本。

    【讨论】:

    • 非常感谢,但问题仍然存在。根据您的建议,我尝试使用“pip install --ignore-installed -U docplex”升级 docplex 模块;请看我已经升级到最新版本:ibb.co/7yNd4bL。然后,我在这里添加了上述内容根:ibb.co/ZSryVk4。但是,当我在 PyCharm 的控制台中运行“import cplex”时,我遇到了这个错误:ibb.co/6N1TXW3
    • 执行这些步骤后:ibb.co/Yt9SyYW,我遇到了类似的错误:ibb.co/nw5gkv6。感谢您的关注。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2021-06-13
    • 2018-04-06
    • 2023-04-03
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多