Resolved: After researching, I see this problem plagues many other developers as well. The root cause is that the Distribution Windows Build of Apache 2.2 is built with msvcr71.dll which is the C++ runtime dll for Visual Studio 2003!!! But, most recent builds of python .pyd files which link to C/C++ code, are built with msvcr90.dll which is the one from Visual Studio 2008. As a result, Apache chokes with this obscure error (failure to load a dll) whenever a pyd is imported that is built with any C/C+ runtime which is not msvrcr71.dll. If you run httpd.exe from a command prompt, you will get an error popup for Microsoft error R6034.
In particular, if you want to used sftp in python on Apache 2.2, you cannot do so using the distributed Windows build of Apache 2.2. However, there are lots of postings showing how to build Apache 2.2 yourself under Visual Studio 2008, so that would be the workaround for running web2py on a Windows platform under Apache 2.2 when you are doing sftp or something using C/C++ code. See http://comments.gmane.org/gmane.comp.apache.devel/43600 where it mentions that Apache 2.4 will finally be built with a current Microsoft C++ runtime dll. Another workaround if you do not want to build Apache in VS 2008, is to try to run web2py under IIS. I got it working under IIS 7 on Vista, but yes, it is quite difficult to do even with the easiest of the 3 methods described in the web2py slice about IIS. The easiest method is to use Rocket together with IIS 7, where IIS 7 is used as a proxy for Rocket. Additional steps to take regarding what is mentioned in the slice is to create web application in IIS 7 to serve as a kind of surrogate for the web2py application. Plus the specifics of the routes.py entries and of the .NET URL rewriter file ManagedFusion.Rewriter.txt are pretty much have to discovered by experimentation. Here is what works for my web2py app named 'UETR' on IIS 7: ManagedFusion.Rewriter.txt ------------------------------------------------------- RewriteEngine On RewriteBase / RewriteRule ^(/) http://138.85.50.99:8000/UETR?r=$1 [R,NC] c:\web2py\routes.py ----------------------- default_application = 'UETR' # ordinarily set in base routes.py default_controller = 'default' # ordinarily set in app-specific routes.py default_function = 'index' # ordinarily set in app-specific routes.py routes_app = ((r'/(?P<app>welcome|admin|uetr)\b.*', r'\g<app>'), (r'(.*)', r'UETR'), (r'/?(.*)', r'UETR')) routes_in = ((r'.*:/favicon.ico', r'/examples/static/favicon.ico'), (r'.*:/robots.txt', r'/examples/static/robots.txt'), (r'.*:/LTE1/index', r':8000/UETR/default/ index'), ((r'.*http:/localhost.* (?P<any>.*)', r'http://localhost: 8000/UETR/default/index'))) routes_out = ((r'.*http://otherdomain.com.* /app/ctr(?P<any>.*)', r'\g<any>'), (r'/app(?P<any>.*)', r'\g<any>')) ---------------------------------------------------------------------------------------------- I created an ASP.NET 4.0 web application on IIS 7 whose Virtual Directory name is 'LTE1' In it, I used the Visual Studio 2010 wizard to create a basic web application (hello world roughly). In that web application I had to modify the web.config as per the documentation for ManagedFusion.Rewriter I also created a 'bin' folder in LTE1 and copied the Managed Fusion dll into into it. The actual content of the .aspx pages in this .NET web app are irrelevant as this app is never rendered. Only its web.config is read and acted upon by Managed Fusion, to cause the request to be passed to the URL where web2py is running on Rocket at port 8000. --------------------------------------------------------------------------------------------- Now if I browse to http://138.85.50.99/LTE1 It hits IIS 7 and magically reroutes to my UETR web2py app at http://138.85.50.99:8000/UETR?r=/LTE1 More work is needed to refine it, but the basic functionality is shown. On Oct 6, 9:19 pm, dlypka <dly...@gmail.com> wrote: > My web2py app which uses paramiko sftp, works fine under the Rocket > webserver, > but fails here when run under the Apache 2.2 webserver, under WINDOWS > VISTA Enterprise: > > • File "C:\Python27\lib\site-packages\Crypto\Random\OSRNG\nt.py", line > 28 > > import winrandom <------ failing to load some DLL at line 28 > ---------- > from rng_base import BaseRNG > > I imagine it is some kind of permissions problem, maybe with having to > load a cryptographic C dll > > I have already run a Process viewer and cleaned up the PATH to avoid > dll search failures. > > This is a proof of concept app to a major U.S. corporation. They have > already seen it work under Rocket > and are very excited to see it deployed under a standard webserver. > > An alternative is to use IIS7 but the web2py slice I read looked very > difficult to follow so I am trying Apache first. > We are also running Symantec anti virus (corporate edition) and we are > locked out from being able to disable it. > Not sure if antivirus interferes with Apache. We only have this > corporate PC to use at the moment. > > I would appreciate any clues or tips for configuring Apache to load > paramiko sftp under Windows. > Or links to straight-forward and $free steps for installing web2py > under IIS 7 in Vista.