How to create an stand-alone executable from Python code using Pyomo?

242 views
Skip to first unread message

Ryan D

unread,
Mar 20, 2019, 2:37:31 PM3/20/19
to Pyomo Forum
I have a single program consisting of 10 Python (v3.6) files total that I need to create an executable from.  But when I tried using PyInstaller and Py2exe I got errors due to Pyomo not being a supported package.  Which programs will allow me to create an executable?

Alfaima Solano

unread,
Jul 2, 2019, 3:18:41 PM7/2/19
to Pyomo Forum
Hi Ryan, 

I'm also trying to do the same but I couldn't. Could you solve it? 

Thanks

Alfaima Solano

unread,
Jul 15, 2019, 6:38:50 PM7/15/19
to Pyomo Forum
Ok guys. I solved it, 

I could only make it work with CBC optimizer. Pyinstaller cannot import pyomo modules by itself so I had to rely in a Spaguetti command to import them all. 

If someone knows how to make a .spec file so this is easier please let us know in this thread. 

Here it goes: 

pyinstaller --hidden-import=numbers --hidden-import=pyutilib --hidden-import=pyutilib.component.config --hidden-import=pyomo --hidden-import=pyomo.environ --hidden-import=pyutilib.component.app --hidden-import=pyutilib.common --hidden-import=pyutilib.component.executables --hidden-import=pyutilib.component.loader --hidden-import=pyutilib.dev --hidden-import=pyutilib.dev --hidden-import=pyutilib.enum --hidden-import=pyutilib.math --hidden-import=pyutilib.misc --hidden-import=pyutilib.ply --hidden-import=pyutilib.pyro --hidden-import=pyutilib.R --hidden-import=pyutilib.services --hidden-import=pyutilib.subprocess --hidden-import=pyutilib.svn --hidden-import=pyutilib.th --hidden-import=pyutilib.virtualenv --hidden-import=pyutilib.workflow --hidden-import=pyomo.age --hidden-import=pyomo.bilevel --hidden-import=pyomo.bilevel.plugins --hidden-import=pyomo.core --hidden-import=pyomo.core.plugins --hidden-import=pyomo.dae --hidden-import=pyomo.dae.plugins --hidden-import=pyomo.gdp --hidden-import=pyomo.gdp.plugins --hidden-import=pyomo.neos --hidden-import=pyomo.neos.plugins --hidden-import=pyomo.opt --hidden-import=pyomo.opt.plugins  --hidden-import=pyomo.pysp --hidden-import=pyomo.pysp.plugins --hidden-import=pyomo.solvers.plugins --hidden-import=pyomo.solvers --hidden-import=pyomo.checker --hidden-import=pyomo.checker.plugins --hidden-import=pyomo.contrib --hidden-import=pyomo.contrib.plugins --hidden-import=pyomo.dataportal --hidden-import=pyomo.dataportal.plugins --hidden-import=pyomo.duality --hidden-import=pyomo.duality.plugins --hidden-import=pyomo.kernel --hidden-import=pyomo.kernel.plugins --hidden-import=pyomo.mpec --hidden-import=pyomo.mpec.plugins --hidden-import=pyomo.network --hidden-import=pyomo.network.plugins --hidden-import=pyomo.repn --hidden-import=pyomo.repn.plugins --hidden-import=pyomo.scripting --hidden-import=pyomo.scripting.plugins --hidden-import=pyomo.util --hidden-import=pyomo.util.plugins --hidden-import=pyomo.common --hidden-import=pyomo.common.plugins --hidden-import=sys --hidden-import=logging --hidden-import=re --hidden-import=sys --hidden-import=pyutilib.services --hidden-import=pyomo.core.expr.numvalue --hidden-import=pyomo.core.expr.numvalue --hidden-import=pyomo.solvers.plugins.solvers.direct_solver --hidden-import=pyomo.solvers.plugins.solvers.direct_or_persistent_solver --hidden-import=pyomo.core.kernel.component_set --hidden-import=pyomo.core.kernel.component_map --hidden-import=pyomo.opt.results.results_ --hidden-import=pyomo.opt.results.solution --hidden-import=pyomo.opt.results.solver --hidden-import=pyomo.opt.base --hidden-import=pyomo.core.base.suffix --hidden-import=pyomo.core.base.var --hidden-import=pyomo.core.base.PyomoModel --hidden-import=pyomo.solvers.plugins.solvers.persistent_solver --hidden-import=pyomo.opt.base.problem --hidden-import=pyomo.opt.base.convert --hidden-import=pyomo.opt.base.formats --hidden-import=pyomo.opt.base.results  --hidden-import=pyomo.core.base.block --hidden-import=pyomo.core.kernel.block --hidden-import=pyomo.core.kernel.suffix hidden-import=pyomo.solvers.plugins.solvers.CBCplugin -F --onefile test.py

Where test.py contains both the abstract and the concrete model of an optimization problem. 


Cheers


On Wednesday, March 20, 2019 at 1:37:31 PM UTC-5, Ryan D wrote:

Vito Stamatti

unread,
Nov 25, 2020, 9:44:51 AM11/25/20
to Pyomo Forum
I'm having the same problem and could not find any correct answer.
I've tried your suggestion but didn't work. Is there a way to debug which packages needs to be imported manually? or you just put them all?

Alfaima Solano

unread,
Nov 25, 2020, 12:20:40 PM11/25/20
to pyomo...@googlegroups.com
In the last hidden '--' is missing. The code should work properly. I tried to guess the strict necessary packages but I had to import all. Also note that this is not possible with commercial solvers. 

--
You received this message because you are subscribed to the Google Groups "Pyomo Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pyomo-forum...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pyomo-forum/f898ec4e-6e42-4bcd-8def-7c718897e765n%40googlegroups.com.

Alfaima Solano

unread,
Nov 25, 2020, 12:30:10 PM11/25/20
to Pyomo Forum
Hi Ryan, 

The complete code would be 

pyinstaller --hidden-import=numbers --hidden-import=pyutilib --hidden-import=pyutilib.component.config --hidden-import=pyomo --hidden-import=pyomo.environ --hidden-import=pyutilib.component.app --hidden-import=pyutilib.common --hidden-import=pyutilib.component.executables --hidden-import=pyutilib.component.loader --hidden-import=pyutilib.dev --hidden-import=pyutilib.dev --hidden-import=pyutilib.enum --hidden-import=pyutilib.math --hidden-import=pyutilib.misc --hidden-import=pyutilib.ply --hidden-import=pyutilib.pyro --hidden-import=pyutilib.R --hidden-import=pyutilib.services --hidden-import=pyutilib.subprocess --hidden-import=pyutilib.svn --hidden-import=pyutilib.th --hidden-import=pyutilib.virtualenv --hidden-import=pyutilib.workflow --hidden-import=pyomo.age --hidden-import=pyomo.bilevel --hidden-import=pyomo.bilevel.plugins --hidden-import=pyomo.core --hidden-import=pyomo.core.plugins --hidden-import=pyomo.dae --hidden-import=pyomo.dae.plugins --hidden-import=pyomo.gdp --hidden-import=pyomo.gdp.plugins --hidden-import=pyomo.neos --hidden-import=pyomo.neos.plugins --hidden-import=pyomo.opt --hidden-import=pyomo.opt.plugins  --hidden-import=pyomo.pysp --hidden-import=pyomo.pysp.plugins --hidden-import=pyomo.solvers.plugins --hidden-import=pyomo.solvers --hidden-import=pyomo.checker --hidden-import=pyomo.checker.plugins --hidden-import=pyomo.contrib --hidden-import=pyomo.contrib.plugins --hidden-import=pyomo.dataportal --hidden-import=pyomo.dataportal.plugins --hidden-import=pyomo.duality --hidden-import=pyomo.duality.plugins --hidden-import=pyomo.kernel --hidden-import=pyomo.kernel.plugins --hidden-import=pyomo.mpec --hidden-import=pyomo.mpec.plugins --hidden-import=pyomo.network --hidden-import=pyomo.network.plugins --hidden-import=pyomo.repn --hidden-import=pyomo.repn.plugins --hidden-import=pyomo.scripting --hidden-import=pyomo.scripting.plugins --hidden-import=pyomo.util --hidden-import=pyomo.util.plugins --hidden-import=pyomo.common --hidden-import=pyomo.common.plugins --hidden-import=sys --hidden-import=logging --hidden-import=re --hidden-import=sys --hidden-import=pyutilib.services --hidden-import=pyomo.core.expr.numvalue --hidden-import=pyomo.core.expr.numvalue --hidden-import=pyomo.solvers.plugins.solvers.direct_solver --hidden-import=pyomo.solvers.plugins.solvers.direct_or_persistent_solver --hidden-import=pyomo.core.kernel.component_set --hidden-import=pyomo.core.kernel.component_map --hidden-import=pyomo.opt.results.results_ --hidden-import=pyomo.opt.results.solution --hidden-import=pyomo.opt.results.solver --hidden-import=pyomo.opt.base --hidden-import=pyomo.core.base.suffix --hidden-import=pyomo.core.base.var --hidden-import=pyomo.core.base.PyomoModel --hidden-import=pyomo.solvers.plugins.solvers.persistent_solver --hidden-import=pyomo.opt.base.problem --hidden-import=pyomo.opt.base.convert --hidden-import=pyomo.opt.base.formats --hidden-import=pyomo.opt.base.results  --hidden-import=pyomo.core.base.block --hidden-import=pyomo.core.kernel.block --hidden-import=pyomo.core.kernel.suffix --hidden-import=pyomo.solvers.plugins.solvers.CBCplugin -F --onefile test.py

Where test.py contains both the abstract and the concrete model of an optimization problem. 

I fixed it because it had an error at the end of the string. 
Reply all
Reply to author
Forward
0 new messages