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/
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 <[email protected] 
> <javascript:>> 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 <[email protected]> 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 [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.
>>>
>>>
>> -- 
>> 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.
>>
>>
> -- 
> 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] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at http://groups.google.com/group/modwsgi.
> For more options, visit 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.

Reply via email to