我正在尝试测试一些代码。主脚本需要从许多子目录导入。脚本的结构是这样的(我编辑它以明确dir1和2是构建的子目录):
build
ascript.py
dir1
script2.py
dir2
script3.py
subdir1
script4.py
script5.py
subdir2
script6.py
.
.
.
注意:不是完整的表示。
我被告知要通过命令shell测试SCRIPT2,切换到build目录,然后输入:
SET PYTHONPATH="." python dir1/script2.py
该脚本有一个import语句:
from dir2.script3 import *
Script3从一个或多个dir或subdir文件夹
中的脚本调用导入所以当运行命令SET时。 。 。 (见上文)我没有输出。认为这是我的问题而不是代码问题我将dir2复制到
C:\PROGRAM FILES\python264
在CMD提示下运行相同的指令,我得到了一些部分输出
这告诉我SET PYTHONPATH在Windows XP中没有按预期工作。
我希望这个问题有道理。
回应SLOTT的要求 - 然而,在读完他的问题之后,我明白了一个问题是我不明白我实际上提交了两个命令
请注意,在名为html的目录中有一个名为node的脚本,它是parsers2的子目录,它是core的子目录,与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>
答案 0 :(得分:1)
命令set PYTHONPATH=C:\texttool1\build
和dir1\script2.py
应该完美无缺。确保你
此外,可执行脚本通常以必须从可执行文件所在的目录执行的方式编写。尝试在其目录中而不是从父文件夹中启动“extract_section.py”。
顺便说一下,将顶级软件包命名为“core”是不寻常的,但代码会从该软件包(from core.parsers2.html.node import *
)进行全局导入。或者“核心”包含在另一个包中?也许这应该是本地导入(from .core.parsers2.html.node import *
)?
答案 1 :(得分:0)
我在XP上的PYTHONPATH
也没有太多运气。您可能需要为include提供相对路径,或者可以将目录添加到syspath:
sys.path.append('biglongdirectory')
强烈劝阻,但是......而是this option