import vs. subdirectory search

J

John Nagle

Some obscure import issues:

I'm running Python 2.3.4 from a CGI script on a shared hosting Linux system.
The CGI program is being executed from Apache, as "nobody". I have some
local modules installed in "~myname/lib/python"; these include
"MySQLdb" and "M2Crypto".

Since this is running as "nobody", I append

/home/myname/lib/python

to sys.path.

Within the CGI programs,

import MySQLdb # works fine
import M2Crypto # works fine
import SSL # "No module named SSL"

The problem is that SSL is in a subdirectory of the M2Crypto directory,
and that's not being searched. I can execute "import M2Crypto.SSL",
but that doesn't have the same effect; it puts SSL in a different
place in the namespace. I'm trying to avoid that; it causes obscure
aliasing problems.

On Python 2.4 under Windows 2000, importing from a subdirectory
appears to work. Is that a Python 2.3.4 thing, or a Linux thing,
or something else?

(The idea is to be able to run (mostly) the same Python code on Windows, for
test, and Linux, for production.)

John Nagle
 
G

Gabriel Genellina

I'm running Python 2.3.4 from a CGI script on a shared hosting Linux
system.
The CGI program is being executed from Apache, as "nobody". I have some
local modules installed in "~myname/lib/python"; these include
"MySQLdb" and "M2Crypto".

Since this is running as "nobody", I append

/home/myname/lib/python

to sys.path.

Within the CGI programs,

import MySQLdb # works fine
import M2Crypto # works fine
import SSL # "No module named SSL"

The problem is that SSL is in a subdirectory of the M2Crypto directory,
and that's not being searched.
And should *not* be searched, unless the importing module is itself in the
M2Crypto directory.
I can execute "import M2Crypto.SSL",
but that doesn't have the same effect; it puts SSL in a different
place in the namespace. I'm trying to avoid that; it causes obscure
aliasing problems.
You *could* do: from M2Crypto import SSL, but I think this is not your
problem.
On Python 2.4 under Windows 2000, importing from a subdirectory
appears to work. Is that a Python 2.3.4 thing, or a Linux thing,
or something else?
No, it should not work as you describe it. Either you have another SSL
module in another place, or sys.path includes the M2Crypto directory.
On your 2.4 Windows, try this:
import sys
import SSL
print SSL.__file__
print sys.path
and see what happens
 
G

gordyt

John try this:

from M2Crypto import SSL

That should put your SSL module in the namespace as you want.

--gordy
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,225
Members
46,815
Latest member
treekmostly22

Latest Threads

Top