Hi Nico, Thanks for your inputs.
I've actually run windows py2.7 binary with modules within site-packages, and pip can be leveraged by setting your target folder like this: pip install -t site-packages <package_name>. Just for the benefit of other readers. It's just that pandas didn't quite work for me in py2.7 and ported my code to python 3.5+. It is convenient to distribute your app and whole web2py as a binary or as a client for desktop users. If we were to package with pynsist with webview: https://github.com/takluyver/pynsist/tree/master/examples/pywebview it can act *like *a standalone binary app on Windows or Mac masking the local web address. I also see a value in this as a way forward to have python based program running like a program locally on a client rather in the cloud wherever necessary cloud sync can be employed. I have not been successful with pynsist though. Best, rama On Monday, 29 April 2019 20:49:49 UTC+8, Nico Zanferrari wrote: > > Hi rama, > > first of all, note that the shell.py fix will resolve only the 'cosmethic' > problem of the help command (and "copyright", "credits" , "license" > commands) that doesn't work in the interactive shell. But it will not > change the import problem in any way. > > > According to the manual, if you run web2py *from source* you can import > from it any python module that is in the PYTHONPATH (sys.path) - which is > automatically changed by web2py in order to include also > web2py/site-packages (globally) and web2py/application/yourapp/modules > (inside yourapp). > The last one is preferred if you are planning to distribute the app or you > are experimenting with different versions of the same module. It also has > higher priority and can even be accessed by other apps as > web2py/application/anotherapp/modules. > > If you run web2py *from the compiled binary*, any system-wide folder will > be ignored - only what's down the web2py folder will be available. Modules > can be placed on the folders: web2py, web2py/site-packages (globally for > all the apps) and web2py/application/yourapp/modules (inside yourapp). You > can check it by yourself with the interactive shell and the simple > helloworld.py module. > > What's different and problematic in the 'running from binary' is that you > cannot use pip (or similar) for installing modules inside. You instead have > to pip-install them on a full system (that has python of the same version > of the binary one) and manually copy the related files inside the binary > folders. For complex module like pandas, you also have to copy all the > files for the related pre-requisites - and possibly test them one by one. > Unfortunately, this could fail - expecially if the modules have binary > files. In this case, the last resort is to try to compile the binary > version by yourself from a working web2py source - following the > instructions on my repository and specifying your additional needed > modules. Maybe PyInstaller will play the module dependency game better than > you ;-) > > > I've also copied these advices on this howto page > <https://github.com/nicozanf/web2py-pyinstaller/blob/master/HOWTO-modules.md> > for > future reference - feel free to correct me if I was wrong somewhere! > > > Cheers, > Nico > > > Il giorno lun 29 apr 2019 alle ore 04:24 rāma <ranj...@gmail.com > <javascript:>> ha scritto: > >> Hi Nico, >> >> Thank you for the insights. I am actually importing a number of modules >> within the controllers fyi, not only via shell. >> >> Would patching shell.py fix the behaviour application wide? >> >> Do you suggest I pip install into site-packages again instead of copying >> from my source version? I suspect that it's not going to fix it. >> >> Folder structure: >> web2py >> |_site-packages <- here's where my modules are >> >> I am trying to package and bundle the whole web2py for work as an app >> solution and for test release soon. >> Your experimental binaries would definitely help me to do early test with >> users while waiting for the official binaries. I could do some quick >> patches on web2py if required too, please advise how. >> >> Best, >> rama >> >> On Monday, 29 April 2019 05:30:55 UTC+8, Nico Zanferrari wrote: >>> >>> I've found why the help command (and "copyright", "credits" , >>> "license") it's missing. It's due to the fact that PyInstaller replaces >>> the original python module 'site' with a fake one >>> <https://github.com/pyinstaller/pyinstaller/blob/develop/PyInstaller/fake-modules/site.py> >>> >>> that contains this comment: >>> >>> >>> "This is a fake 'site' module available in default Python Library. >>> >>> The real 'site' does some magic to find paths to other possible >>> Python modules. We do not want this behaviour for frozen applications. >>> >>> Fake 'site' makes PyInstaller to work with distutils and to work inside >>> virtualenv environment." >>> >>> It's possible to change this behaviour on gluon/shell.py by adding the >>> missing code - I'm setting up a PR for this ;-) >>> >>> Nico >>> >>> >>> Il giorno dom 28 apr 2019 alle ore 19:45 Nico Zanferrari < >>> nico...@gmail.com> ha scritto: >>> >>>> Hi rāma, >>>> >>>> in fact we are both wrong and the console is working fine! >>>> I've tested it with a simple module (the simplest one, helloword.py , >>>> see >>>> https://stackoverflow.com/questions/15746675/how-to-write-a-python-module-package) >>>> >>>> and it can be regularly imported if it's placed on the main folder or on >>>> the site-packages one. So, it seems that your problem is strictly related >>>> to copying the pandas module. >>>> >>>> But indeed the interactive console is not so perfect. It's somehow >>>> missing the help command (and "copyright", "credits" , "license"), and >>>> this >>>> happens with PyInstaller on PY2/PY3 with Windows and Mac even with the >>>> simple 2-lines program: >>>> >>>> import code >>>> code.interact() >>>> >>>> Nico >>>> >>>> Il giorno sab 27 apr 2019 alle ore 13:45 rāma <ranj...@gmail.com> ha >>>> scritto: >>>> >>>>> Any quick fix will be appreciated though. >>>>> >>>>> On Friday, 26 April 2019 15:30:57 UTC+8, Massimo Di Pierro wrote: >>>>>> >>>>>> Yes. The plan is to provide the following executable from the >>>>>> official web page: >>>>>> >>>>>> OS web2py for py2.7, web2py for py3.7, web3py for py3.7 (WIP) >>>>>> WINDOWS web2py for py2.7, web2py for py3.7, web3py for py3.7 (WIP) >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Thursday, 25 April 2019 22:02:37 UTC-7, rāma wrote: >>>>>>> >>>>>>> This is wonderful. And, something I would love to be adopted to the >>>>>>> official repo. >>>>>>> >>>>>>> Thanks for this! >>>>>>> >>>>>>> On Sunday, 3 March 2019 19:24:38 UTC+8, Nico Zanferrari wrote: >>>>>>>> >>>>>>>> Good morning! >>>>>>>> >>>>>>>> I'm proud to say that I've succeeded in building the Windows 64 bit >>>>>>>> binary with python 3.7.2 using pyinstaller ! Grab it from >>>>>>>> https://github.com/nicozanf/web2py-pyinstaller >>>>>>>> >>>>>>>> There are some little gothas, but it seems to work fine: >>>>>>>> - in the console I've got many errors like >>>>>>>> 'ERROR:Rocket.Errors.Thread-2:Tried to send "500 Server Error" to >>>>>>>> client >>>>>>>> but received socket error'. They disappear as soon as I've disabled >>>>>>>> IPv6 >>>>>>>> and rebooted. There are users that report also to fix similar problems >>>>>>>> by >>>>>>>> adding the hostname on the hosts file >>>>>>>> - psycopg2 is placed in a folder by itself, instead than in the >>>>>>>> root folder >>>>>>>> - in the currently official binary build (with pyhton 2.7) there >>>>>>>> are also two binaries: web2py_no_console.exe and web2py_on_gevent.exe. >>>>>>>> They >>>>>>>> don't run correctly, and don't seem to be so important for me so I've >>>>>>>> decided to skip their generation. >>>>>>>> - Macintosh compatibility is needed, but I cannot work on it >>>>>>>> >>>>>>>> Please, help with testing it! I'll make a PR on the official web2py >>>>>>>> repository after some feedback. >>>>>>>> >>>>>>>> Cheers, >>>>>>>> Nico >>>>>>>> >>>>>>>> Il giorno mer 27 feb 2019 alle ore 12:03 Nico Zanferrari < >>>>>>>> nico...@gmail.com> ha scritto: >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> this is a big problem also from my point of view and I've already >>>>>>>>> opened issue 2027 <https://github.com/web2py/web2py/issues/2027> . >>>>>>>>> However it's not so easy to achieve this goal, because you've to >>>>>>>>> switch to >>>>>>>>> 3.x + go 64 bit + change the *freezer* program (py2exe >>>>>>>>> and bbfreeze do not work with python >= 3.5). I'm playing with >>>>>>>>> pyinstaller, >>>>>>>>> but I'm not promising anything. And also a binary Mac version is >>>>>>>>> needed (I >>>>>>>>> only have a Win box), plus testing everything. >>>>>>>>> >>>>>>>>> Cheers, >>>>>>>>> Nico >>>>>>>>> >>>>>>>>> Il giorno mer 27 feb 2019 alle ore 11:45 elisha bere < >>>>>>>>> elish...@gmail.com> ha scritto: >>>>>>>>> >>>>>>>>>> Hie, >>>>>>>>>> >>>>>>>>>> Is it possible to change from 2.7 to 3.x in my web2py app >>>>>>>>>> >>>>>>>>>> On 17 Feb 2019 20:57, "Jitun John" <jitu...@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> "It requires Python 2.6 (no more supported), Python 2.7 >>>>>>>>>>> (stable) or Python 3.5+ (*recommended for new projects*) >>>>>>>>>>> already installed on your system. >>>>>>>>>>> There are also *binary packages for Windows* and Mac OS X.* >>>>>>>>>>> They include the Python 2.7 interpreter* so you do not need to >>>>>>>>>>> have it pre-installed." >>>>>>>>>>> >>>>>>>>>>> Sorry for my ignorance, I am assuming "Python 2.7 interpreter" >>>>>>>>>>> as "python27.dll" and "pywintypes27.dll" files. >>>>>>>>>>> >>>>>>>>>>> I recently moved my app from 2.x to 3.x using PyCharm IDE and >>>>>>>>>>> the app works fine when using IDE on 3.7 python. >>>>>>>>>>> But when I try to compile it to .exe (using .iss file + >>>>>>>>>>> hstart.exe), I cant use the existing web2py_win.zip file. >>>>>>>>>>> >>>>>>>>>>> Gives me "<type 'exceptions.ValueError'> unsupported pickle >>>>>>>>>>> protocol: 3" >>>>>>>>>>> >>>>>>>>>>> As we are recommending new projects on 3.x, Is it possible for >>>>>>>>>>> the next version to have a 3.x interpreter ? >>>>>>>>>>> or if we have a workaround, I am happy to try it. >>>>>>>>>>> >>>>>>>>>>> Thanks. >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Resources: >>>>>>>>>>> - http://web2py.com >>>>>>>>>>> - http://web2py.com/book (Documentation) >>>>>>>>>>> - http://github.com/web2py/web2py (Source code) >>>>>>>>>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>>>>>>>>> --- >>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>> Google Groups "web2py-users" group. >>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>> it, send an email to web...@googlegroups.com. >>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Resources: >>>>>>>>>> - http://web2py.com >>>>>>>>>> - http://web2py.com/book (Documentation) >>>>>>>>>> - http://github.com/web2py/web2py (Source code) >>>>>>>>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>>>>>>>> --- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "web2py-users" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to web...@googlegroups.com. >>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>> -- >>>>> Resources: >>>>> - http://web2py.com >>>>> - http://web2py.com/book (Documentation) >>>>> - http://github.com/web2py/web2py (Source code) >>>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "web2py-users" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to web...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- >> Resources: >> - http://web2py.com >> - http://web2py.com/book (Documentation) >> - http://github.com/web2py/web2py (Source code) >> - https://code.google.com/p/web2py/issues/list (Report Issues) >> --- >> You received this message because you are subscribed to the Google Groups >> "web2py-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to web...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.