Just to be sure, can you explicitly pull the latest image to make sure you have it, in case you picked up an intermediate image when I was quickly making changes and had broken something. Then rebuild your derived image.
BTW, what is PATH environment variable set to in both cases, shell and script? Graham > On 25 Nov 2015, at 12:24 PM, Collin Jackson <[email protected]> wrote: > > Other than the mentioned sys.path.append(), there are only module imports > (all of which are from the standard library). > > Here is sys.path when running the default mod_wsgi docker command (docker run > image-name): > ['/app/Middleware', '/usr/local/python/lib/python27.zip', > '/usr/local/python/lib/python2.7', > '/usr/local/python/lib/python2.7/plat-linux2', > '/usr/local/python/lib/python2.7/lib-tk', > '/usr/local/python/lib/python2.7/lib-old', > '/usr/local/python/lib/python2.7/lib-dynload', > '/usr/local/python/lib/python2.7/site-packages', '/opt/C3STEM/Middleware/'] > > Here is sys.path when running the script using Python from the shell in the > container: > ['/app/Middleware', '/.whiskey/virtualenv/lib/python27.zip', > '/.whiskey/virtualenv/lib/python2.7', > '/.whiskey/virtualenv/lib/python2.7/plat-linux2', > '/.whiskey/virtualenv/lib/python2.7/lib-tk', > '/.whiskey/virtualenv/lib/python2.7/lib-old', > '/.whiskey/virtualenv/lib/python2.7/lib-dynload', > '/usr/local/python/lib/python2.7', > '/usr/local/python/lib/python2.7/plat-linux2', > '/usr/local/python/lib/python2.7/lib-tk', > '/.whiskey/virtualenv/lib/python2.7/site-packages', > '/usr/local/python/lib/python2.7/site-packages', '/opt/C3STEM/Middleware/'] > > It looks to me like the first case is not using the virtual environment, > although I'm no Python expert. > > On Tuesday, November 24, 2015 at 7:04:46 PM UTC-6, Graham Dumpleton wrote: > What do you have at the start of c3stemserver.py besides: > > sys.path.append('/opt/C3STEM/Middleware/‘) > > Are there any other updates sys.path or does the code do anything with > site.addsitedir()? > > What is sys.path just before attempt module in real application and is that > different to what you see in python from shell? > > Graham > >> On 25 Nov 2015, at 11:29 AM, Collin Jackson <collinj...@ <>gmail.com >> <http://gmail.com/>> wrote: >> >> Actually, it's the opposite case. When I get into the container and run the >> script directly with Python, the import succeeds. >> >> On Tuesday, November 24, 2015 at 6:24:08 PM UTC-6, Graham Dumpleton wrote: >> Can you clarify that you are saying that when you get into the container >> with mod_wsgi-docker-shell and run Python interpreter directly, or by >> running a script manually, that the imports fail there as well. >> >> If yes, can you from the interpreter under that shell, show what sys.path is >> for the interpreter, plus what path you find the cherrypy package installed >> under in the system. Give a ‘ls -las’ of the parent and package directory >> where cherrypy is installed. >> >> Thanks. >> >> Graham >> >>> On 24 Nov 2015, at 3:52 AM, Collin Jackson <collinj...@ <>gmail.com >>> <http://gmail.com/>> wrote: >>> >>> Changing the working directory solved the issue with relative file imports, >>> so thank you for that input. >>> >>> Unfortunately, I am now running into the problem that I originally thought >>> I was having. My script is failing during import of cherrypy, even though I >>> have confirmed that it was installed both globally and in the virtual >>> environment in the docker container. When I run my wsgi script using python >>> (i.e. python script-name), I do not encounter the import issue. However, I >>> tried running the script using mod_wsgi-express start-server script-name >>> and again ran into the import issue (in both cases, I followed your advice >>> above to get a shell inside the container). Additionally, I commented out >>> the line that imports cherrypy to see if it was a problem specific to >>> cherrypy, but I also have the same issue later in the script when I try to >>> import bson. >>> >>> In case it may be helpful, I have included the output and stacktrace for >>> the ImportError: >>> $ docker run -it --rm wsgi >>> Server URL : http://localhost/ <http://localhost/> >>> Server Root : /tmp/mod_wsgi-localhost:80:0 >>> Server Conf : /tmp/mod_wsgi-localhost:80:0/httpd.conf >>> Error Log File : /dev/stderr (warn) >>> Startup Log File : /dev/stderr >>> Request Capacity : 5 (1 process * 5 threads) >>> Request Timeout : 60 (seconds) >>> Queue Backlog : 100 (connections) >>> Queue Timeout : 45 (seconds) >>> Server Capacity : 20 (event/worker), 20 (prefork) >>> Server Backlog : 500 (connections) >>> Locale Setting : en_US.UTF-8 >>> [Mon Nov 23 16:05:00.970167 2015] [mpm_event:notice] [pid 19:tid >>> 140041923430144] AH00489: Apache/2.4.17 (Unix) mod_wsgi/4.4.21 >>> Python/2.7.10 configured -- resuming normal operations >>> [Mon Nov 23 16:05:00.970530 2015] [core:notice] [pid 19:tid >>> 140041923430144] AH00094: Command line: 'httpd (mod_wsgi-express) -f >>> /tmp/mod_wsgi-localhost:80:0/httpd.conf -E /dev/stderr -D >>> MOD_WSGI_MPM_ENABLE_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_EVENT_MODULE -D >>> MOD_WSGI_MPM_EXISTS_WORKER_MODULE -D MOD_WSGI_MPM_EXISTS_PREFORK_MODULE -D >>> FOREGROUND' >>> [Mon Nov 23 16:05:01.039537 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> mod_wsgi (pid=21): Target WSGI script >>> '/tmp/mod_wsgi-localhost:80:0/handler.wsgi' cannot be loaded as Python >>> module. >>> [Mon Nov 23 16:05:01.039853 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> mod_wsgi (pid=21): Exception occurred processing WSGI script >>> '/tmp/mod_wsgi-localhost:80:0/handler.wsgi'. >>> [Mon Nov 23 16:05:01.040227 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> Traceback (most recent call last): >>> [Mon Nov 23 16:05:01.040487 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> File "/tmp/mod_wsgi-localhost:80:0/handler.wsgi", line 94, in <module> >>> [Mon Nov 23 16:05:01.040744 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> recorder_directory=recorder_directory) >>> [Mon Nov 23 16:05:01.041024 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> File >>> "/usr/local/python/lib/python2.7/site-packages/mod_wsgi/server/__init__.py", >>> line 1267, in __init__ >>> [Mon Nov 23 16:05:01.042054 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> exec(code, self.module.__dict__) >>> [Mon Nov 23 16:05:01.042338 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> File "/app/Middleware/c3stemserver.py", line 15, in <module> >>> [Mon Nov 23 16:05:01.042829 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> import cherrypy >>> [Mon Nov 23 16:05:01.043083 2015] [wsgi:error] [pid 21:tid 140041923430144] >>> ImportError: No module named cherrypy >>> >>> >>> >>> On Friday, November 20, 2015 at 4:30:25 PM UTC-6, Graham Dumpleton wrote: >>> If your application is in a sub directory, imports expect to work relative >>> to that for modules, and even perhaps you expect that to be the current >>> working directory so relative file access work, you will want to tell >>> mod_wsgi what the home working directory should be. >>> >>> Thus try: >>> >>> CMD [ "--working-directory=Middleware", "Middleware/c3stemserver.py"] >>> >>> Make sure no strange quotes in that when doing a cut and paste. >>> >>> Graham >>> >>>> On 21 Nov 2015, at 7:31 AM, Collin Jackson <collinj...@ <>gmail.com >>>> <http://gmail.com/>> wrote: >>>> >>>> The script file is in a sub-directory (called "Middleware"), so the >>>> Dockerfile CMD is CMD ["Middleware/c3stemserver.py"]. >>>> >>>> The script does modify sys.path. This line is in the script before the >>>> import sys.path.append('/opt/C3STEM/Middleware/'). >>>> >>>> On Friday, November 20, 2015 at 3:06:44 PM UTC-6, Graham Dumpleton wrote: >>>> Which directory is the wsgi script file in? The top level directory of >>>> your project or a sub directory? >>>> >>>> What do you have for the CMD in your Dockerfile? >>>> >>>> Does your WSGI script file attempt to make modifications to sys.path in >>>> any way? >>>> >>>> Graham >>>> >>>> On 21 Nov 2015, at 3:43 AM, Collin Jackson <collinj...@ <>gmail.com >>>> <http://gmail.com/>> wrote: >>>> >>>>> I initially wrote a couple of replies to your comments, but I discovered >>>>> some additional important information, so I just deleted those and >>>>> decided to start over instead of cluttering the response chain. >>>>> >>>>> I'm new to the code base I'm working with and didn't realize that the >>>>> ImportError was being thrown for an include of a local file, not a >>>>> package (so sorry for the confusion). The file to be imported is in the >>>>> same directory as the wsgi script. Does the wsgi script get copied to >>>>> another directory before running? >>>>> >>>>> On Friday, November 20, 2015 at 4:31:24 AM UTC-6, Graham Dumpleton wrote: >>>>> Sorry for separate messages and not adding to discussion. Don't mean to >>>>> confuse you. Best I can do right now. >>>>> >>>>> If your Dockerfile has USER line in it try commenting it out. >>>>> >>>>> This is not a permanent solution but will help isolate whether is >>>>> permissions issue on writing to application code directory >>>>> >>>>> Graham >>>>> >>>>> On 20 Nov 2015, at 2:34 PM, Collin Jackson <[email protected] <>> >>>>> wrote: >>>>> >>>>>> I'm running mod-wsgi-docker:python-2.7-onbuild and have listed my >>>>>> requirements in requirements.txt. During build, I can see that the >>>>>> packages are installed properly, but when I try to run the image, it >>>>>> crashes on the first non-Standard Library import with an ImportError >>>>>> exception. I can't figure out what's happening and it's not exactly easy >>>>>> to poke around inside the container to see what's going on. I noticed >>>>>> that a virtual environment is created prior to installing the packages >>>>>> (here >>>>>> <https://github.com/GrahamDumpleton/mod_wsgi-docker/blob/master/2.7/build.sh#L87>), >>>>>> but I imagine that if this is the issue, other users would have the >>>>>> same issue. Any ideas? >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "modwsgi" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>>> an email to modwsgi+u...@ <>googlegroups.com <http://googlegroups.com/>. >>>>>> To post to this group, send email to mod...@ <>googlegroups.com >>>>>> <http://googlegroups.com/>. >>>>>> Visit this group at http://groups.google.com/group/modwsgi >>>>>> <http://groups.google.com/group/modwsgi>. >>>>>> For more options, visit https://groups.google.com/d/optout >>>>>> <https://groups.google.com/d/optout>. >>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google Groups >>>>> "modwsgi" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send an >>>>> email to [email protected] <>. >>>>> To post to this group, send email to [email protected] <>. >>>>> Visit this group at http://groups.google.com/group/modwsgi >>>>> <http://groups.google.com/group/modwsgi>. >>>>> For more options, visit https://groups.google.com/d/optout >>>>> <https://groups.google.com/d/optout>. >>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "modwsgi" group. >>>> To unsubscribe from this group and stop receiving emails from it, send an >>>> email to [email protected] <>. >>>> To post to this group, send email to [email protected] <>. >>>> Visit this group at http://groups.google.com/group/modwsgi >>>> <http://groups.google.com/group/modwsgi>. >>>> For more options, visit https://groups.google.com/d/optout >>>> <https://groups.google.com/d/optout>. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "modwsgi" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to [email protected] <>. >>> To post to this group, send email to [email protected] <>. >>> Visit this group at http://groups.google.com/group/modwsgi >>> <http://groups.google.com/group/modwsgi>. >>> For more options, visit https://groups.google.com/d/optout >>> <https://groups.google.com/d/optout>. >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "modwsgi" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <>. >> To post to this group, send email to [email protected] <>. >> Visit this group at http://groups.google.com/group/modwsgi >> <http://groups.google.com/group/modwsgi>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at http://groups.google.com/group/modwsgi > <http://groups.google.com/group/modwsgi>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
