views:

49

answers:

2

I am trying to test some code. The main script requires imports from a number of subdirectories. The structure of the scripts is like this (I edited it to make it clear that dir1 and 2 are subdirectories of build):

build
   ascript.py
  dir1
    script2.py
  dir2
    script3.py
    subdir1
      script4.py
      script5.py
    subdir2
       script6.py
.        
.
.

Note: Not a complete representation.

I was told to test SCRIPT2 through command shell, change to the build directory and then type:

SET PYTHONPATH="." python dir1/script2.py

That script one has an import statement:

from dir2.script3 import *

Script3 calls an import from scripts that are in one or more of the dir or subdir folders

So when run the command SET . . . (see above) I get no output. Thinking that this is a me problem not a code problem I copied dir2 to

C:\PROGRAM FILES\python264

ran the same instructions at the CMD prompt and I got some partial output

This tells me that the SET PYTHONPATH is not working as expected in Windows XP.

I hope this question makes sense.

In response to SLOTT's request - however, after reading his question I understood that one problem is that I did not understand that I was in fact submitting two commands

Note there is a script called node in the directory named html which is a subdirectory of parsers2 which is a subdirectory of core which is at the same level as exp

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\burchkealey.UNO_CBA>cd c:\

C:\>cd c:\texttool1\build

C:\texttool1\build>set pythonpath="."

C:\texttool1\build>python exp/extract_section.py c:\testextract\c40545.htm
Traceback (most recent call last):
  File "exp/extract_section.py", line 4, in <module>
    from  core.parsers2.html.node import *
 ImportError: No module named core.parsers2.html.node

C:\texttool1\build>
A: 

I haven't had much luck with PYTHONPATH on XP either. You may need to give a relative path for your include, or you can add the directory to the syspath:

sys.path.append('biglongdirectory')

It's strongly discouraged, though... instead, there's this option

JoshD
+1  A: 

The commands set PYTHONPATH=C:\texttool1\build and dir1\script2.py should work perfectly. Make sure you

  • type them as two commands in the same console (or in one batch script)
  • use the absolute path to the folder containing the modules

Moreover, executable scripts are often written in a way that they must be executed from the directory in which the executable lies. Try to start "extract_section.py" in its directory instead of from the parent folder.

By the way, it's unusual to name a top package "core", but the code does a global import from that package (from core.parsers2.html.node import *). Or is "core" contained in another package? Maybe this should rather be a local import (from .core.parsers2.html.node import *)?

AndiDog
Thanks so much It took me an hour to get to the point where I understood that the problem was that I wan not getting the path as expected.
PyNEwbie
@PyNEwbie: So what exactly was the problem, then? The wrong working directory?
AndiDog
I think it was that the python interpreter was only looking in PYTHON264 for the modules to import. The developer that is working with me programs on Linux and everything was working for him before he shipped the code to me and crashed. I guess he must have his Python installation set to properly search the appropriate paths.
PyNEwbie