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

Import no longer works in Python 2.3.x

P: n/a
I have some python code in a directory called customModules and this sits
under the main directory which contains a piece of server.py code. Under
2.1.x and 2.2.x, I did the following in server.py :

import time, sys
sys.path += ['./customModules']

from requestHandler import inputHandler

and that allowed me to reference the requestHandler (stored in the
customModules directory) code without having to use
customModules.requestHandler every time. Under 2.3.x this doesn't work
anymore and I get a "ImportError: cannot import name inputHandler" error.
Can anyone shed some light on why this is and how I can get around it
please.

Code that demonstrates this exact problem is at
http://mss.cynetix.co.uk/download.htm - running server.py will work fine
under 2.2 but not under 2.3.

Many thanks
Matt Whiteley
Jul 18 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
"Matt Whiteley" <ma**@cynetix.co.uk> wrote in message news:<w6***********@news-binary.blueyonder.co.uk>...
I have some python code in a directory called customModules and this sits
under the main directory which contains a piece of server.py code. Under
2.1.x and 2.2.x, I did the following in server.py :

import time, sys
sys.path += ['./customModules']

from requestHandler import inputHandler

and that allowed me to reference the requestHandler (stored in the
customModules directory) code without having to use
customModules.requestHandler every time. Under 2.3.x this doesn't work
anymore and I get a "ImportError: cannot import name inputHandler" error.
Can anyone shed some light on why this is and how I can get around it
please.


Unless there's something going on here that's not clear from your
example, you can just add an __init__.py to your customModules
directory, and then use

from customModules.requestHandler import inputHandler

Adding __init__.py creates a "pacakge" out of the subdirectory, and
obviates the sys.path manipulations. See the "Packages" section at
http://www.python.org/doc/current/tut/node8.html for more information.

-- Graham
Jul 18 '05 #2

P: n/a
Interesting, I note that there has been some code revision around the
import. See the whats new in python 2.3, Importing Modules from Zip
Archives and New Import Hooks.

If a full pathname is used, eg.
/home/paul/projects/test/customModules
the code works as before. This would definitely be safer since the
current directory may change in the future, causing the import to fail
anyway.

Regards, Paul Clinch
Jul 18 '05 #3

P: n/a
Hmmm, that messes up all my imports from all over my code and it's all
worked before so I'd rather not. I also wanted the code to be able to run
straight out of the box without people having to hard code the paths.

Thanks anyway though!

"Graham Fawcett" <gr*************@hotmail.com> wrote in message
news:e9**************************@posting.google.c om...
"Matt Whiteley" <ma**@cynetix.co.uk> wrote in message

news:<w6***********@news-binary.blueyonder.co.uk>...
I have some python code in a directory called customModules and this sits under the main directory which contains a piece of server.py code. Under
2.1.x and 2.2.x, I did the following in server.py :

import time, sys
sys.path += ['./customModules']

from requestHandler import inputHandler

and that allowed me to reference the requestHandler (stored in the
customModules directory) code without having to use
customModules.requestHandler every time. Under 2.3.x this doesn't work
anymore and I get a "ImportError: cannot import name inputHandler" error. Can anyone shed some light on why this is and how I can get around it
please.


Unless there's something going on here that's not clear from your
example, you can just add an __init__.py to your customModules
directory, and then use

from customModules.requestHandler import inputHandler

Adding __init__.py creates a "pacakge" out of the subdirectory, and
obviates the sys.path manipulations. See the "Packages" section at
http://www.python.org/doc/current/tut/node8.html for more information.

-- Graham

Jul 18 '05 #4

P: n/a
Hmm, didn't want to have to hard code paths really. I can't understand
what's been broke all of a sudden. I know there's a fair bit of thought gone
into the os.path logic but I can't seem to find anything that relates
directly to my problem.

Thanks Anyway,
Matt

"Paul Clinch" <pc*****@internet-glue.co.uk> wrote in message
news:8c**************************@posting.google.c om...
Interesting, I note that there has been some code revision around the
import. See the whats new in python 2.3, Importing Modules from Zip
Archives and New Import Hooks.

If a full pathname is used, eg.
/home/paul/projects/test/customModules
the code works as before. This would definitely be safer since the
current directory may change in the future, causing the import to fail
anyway.

Regards, Paul Clinch

Jul 18 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.