Okay. I think I might know what the problem is.
For now, add:
mod_wsgi
to your requirements.txt file.
I think that will fix things.
Graham
> On 25 Nov 2015, at 12:34 PM, Graham Dumpleton <[email protected]>
> wrote:
>
> 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]
>> <mailto:[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.