'Pyomo doesn't load when called via cython
I am trying to compile python code that runs pyomo on a RedHat 6 system, but pyomo.environ will not load. It’s not clear to me that this is a pyomo error because pyomo.environ package loads and runs fun when run from python, yet it fails when running from a cython c driver file. The python version is 3.76, pyomo version is 6.4 and cython version is 0.29.15 (Feb 10, 2020).
Here is my pyx file – test1.pyx:
from pyomo import environ as pyo
import cython
cdef public void run_test():
m = pyo.ConcreteModel()
Here is my setup.py file (setup_test.py):
from setuptools import setup, Extension, Command
from Cython.Build import cythonize
import sys
setup(
name='test1',
ext_modules = cythonize([Extension("test1", ["test1.pyx"],include_dirs=['/Users/smith/.pyenv/versions/anaconda3-2021.11/include'])],compiler_directives={'language_level' : "3"} ),
zip_safe=False,
)
This is built using “python setup_test.py build_ext -i” Here is my C driver file:
#include "test1.h"
#include <stdio.h>
int main(void){
PyImport_AppendInittab("test1", PyInit_test1);
Py_Initialize();
PyImport_ImportModule("test1");
run_test();
Py_Finalize();
return 1;
}
The driver file is built using: gcc main_test.c -ggdb -I/people/smith/metabolism -I/people/smith/.pyenv/versions/anaconda3-2020.02/include/python3.7m/ -L/people/smith/metabolism -L/people/smith/.pyenv/versions/anaconda3-2020.02/lib -Wl,-r path,/people/smith/.pyenv/versions/anaconda3-2020.02/lib/,-rpath,/people/smith/metabolism/ /people/smith/.pyenv/versions/anaconda3-2020.02/lib/libpython3.7m.so.1.0 -ltest1
Here is the output:
$ ./a.out
Traceback (most recent call last):
File "test1.pyx", line 4, in init test1
from pyomo import environ as pyo
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/environ/__init__.py", line 79, in <module>
_import_packages()
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/environ/__init__.py", line 76, in _import_packages
pkg.load()
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/opt/plugins/__init__.py", line 12, in load
import pyomo.opt.plugins.driver
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/opt/plugins/driver.py", line 14, in <module>
import pyomo.scripting.pyomo_parser
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/scripting/pyomo_parser.py", line 84, in <module>
description=doc, epilog=epilog, formatter_class=CustomHelpFormatter )
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/argparse.py", line 1647, in __init__
prog = _os.path.basename(_sys.argv[0])
IndexError: list index out of range
Exception ignored in: 'test1.run_test'
Traceback (most recent call last):
File "test1.pyx", line 4, in init test1
from pyomo import environ as pyo
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/environ/__init__.py", line 79, in <module>
_import_packages()
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/environ/__init__.py", line 76, in _import_packages
pkg.load()
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/opt/plugins/__init__.py", line 12, in load
import pyomo.opt.plugins.driver
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/opt/plugins/driver.py", line 14, in <module>
import pyomo.scripting.pyomo_parser
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/pyomo/scripting/pyomo_parser.py", line 84, in <module>
description=doc, epilog=epilog, formatter_class=CustomHelpFormatter )
File "/people/smith/.pyenv/versions/anaconda3-2020.02/lib/python3.7/argparse.py", line 1647, in __init__
prog = _os.path.basename(_sys.argv[0])
IndexError: list index out of range
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|