By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,908 Members | 1,892 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,908 IT Pros & Developers. It's quick & easy.

import vs. subdirectory search

P: n/a
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
Jan 18 '07 #1
Share this Question
Share on Google+
2 Replies


P: n/a
"John Nagle" <na***@animats.comescribió en el mensaje
news:45**************@animats.com...
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

Jan 18 '07 #2

P: n/a
John try this:

from M2Crypto import SSL

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

--gordy

Jan 18 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.