Hi Frank, You should definitely avoid calling Python as a subprocess if you can. As far as Ryan’s example, I agree with the if __name__... but I think that using the imp module is a bit overkill. I would recommend using Setuptool’s entry_points keyword<http://pythonhosted.org/setuptools/setuptools.html#automatic-script-creation>. Or distutils’ scripts keyword<http://docs.python.org/2/distutils/setupscript.html#installing-scripts>, if you must.
An example of a well-known Python package which does this is Pygments<https://bitbucket.org/birkenfeld/pygments-main>, which has a large “library” component but also comes with the pygmentizecommand-line script. The Pygments codebase is pretty large, so if you would like me to whip up a simpler example I’d be glad to do so. Cheers, -- Sean Fisk On Thu, Jan 23, 2014 at 9:17 PM, Frank Rueter | OHUfx <fr...@ohufx.com>wrote: > Sorry if I'm being thick, but I'm not quite understanding how this helps > to connect a python function to qprocess?! All your code does is execute > the script, right?! > I can already call myscript.main() straight up, but maybe I'm missing the > point as I'm unfamiliar with the imp module. > > Let me elaborate a little bit more: > myscript.main() calls a bunch of other python scripts that (directly or > through other scripts again) execute external programs to do some > conversion work. Those external programs spit out their progress to stdout > which I can see fine when I run myscript.main() manually in a python > terminal. > > Now I need run myscript.main() via QProcess and grab stdout to do be able > to show a progress bar as well as show stdout and stderr in a debug window > inside my QT code. > > > Cheers, > frank > > > > > On 24/01/14 14:58, Ryan Gonzalez wrote: > > If you put an "if __name__ == '__main__'" and a main functions, you could > always import the script from the GUI frontend. Example: > > myscript.py > > def main(argv): > do_cool_stuff() > return 0 > > if __name__ == '__main__': > sys.exit(main(sys.argv)) > > mygui.py(Python 2): > > import imp > > ... > > main = imp.load_module('myscript', *imp.find_module('myscript')) > > main.main(my_argv) > > mygui.py(Python 3): > > import importlib.machinery > > main = importlib.machinery.SourceFileLoader('myscript', > 'myscript.py').load_module('myscript') > > main.main(my_argv) > > > On Thu, Jan 23, 2014 at 7:48 PM, Frank Rueter | OHUfx <fr...@ohufx.com>wrote: > >> Hi all, >> >> I got a little code design question: >> >> I have a python script that does a lot of file >> processing/converting/uploading etc and I'd like to write a decent >> interface for it now. >> The main goal is to be able to show the user detailed info about the >> current step and progress as well as clean up properly in case the whole >> thing is cancelled. >> >> My existing python code needs to stay independent of QT so any >> application that supports python can use it. >> I am wondering now how to best connect the python script and the PySide >> code. Should I just run the script as an argument to the python >> interpreter like I would with any other program? E.g.: >> >> process = QtCore.QProcess(self) >> process.start(<path_to_python>, <path_to_python_script>) >> >> As simple as this seems, it feels odd to use python to call itself as an >> external program. >> >> >> I'm happy to go that way but am curious how others are doing this?! >> >> Cheers, >> frank >> >> _______________________________________________ >> PySide mailing list >> PySide@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/pyside >> > > > > -- > Ryan > If anybody ever asks me why I prefer C++ to C, my answer will be simple: > "It's becauseslejfp23(@#Q*(E*EIdc-SEGFAULT. Wait, I don't think that was > nul-terminated." > > > > _______________________________________________ > PySide mailing list > PySide@qt-project.org > http://lists.qt-project.org/mailman/listinfo/pyside > >
_______________________________________________ PySide mailing list PySide@qt-project.org http://lists.qt-project.org/mailman/listinfo/pyside