如何搜索导入的正确目录

2024-09-30 16:28:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在测试一些代码。主脚本需要从多个子目录导入。脚本的结构是这样的(我编辑它是为了明确dir1和dir2是build的子目录):

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

注意:不是完整的表示。你知道吗

我被告知要通过命令shell测试SCRIPT2,更改到构建目录,然后键入:

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

脚本1有一个import语句:

from dir2.script3 import *

Script3从一个或多个dir或subdir文件夹中的脚本调用导入

所以当运行命令集时。(见上图)我没有得到任何输出。认为这是我的问题不是我复制dir2的代码问题

C:\PROGRAM FILES\python264

在CMD提示符下运行了相同的指令,得到了部分输出

这说明设置PYTHONPATH在windowsxp中没有按预期工作。你知道吗

我希望这个问题有道理。你知道吗

然而,在阅读了斯洛特的问题之后,我明白了一个问题,那就是我不明白我实际上是在提交两个命令

注意,在名为html的目录中有一个名为node的脚本,它是parsers2的子目录,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>

Tags: 代码pycoreimport命令build脚本node
2条回答

命令set PYTHONPATH=C:\texttool1\builddir1\script2.py应该可以很好地工作。确保你

  • 在同一控制台中(或在一个批处理脚本中)键入两个命令
  • 使用包含模块的文件夹的绝对路径

此外,可执行脚本的编写方式通常是必须从可执行文件所在的目录执行。试着开始“提取”_截面.py”而不是从父文件夹。你知道吗

顺便说一下,将顶级包命名为“core”是不常见的,但是代码会从该包(from core.parsers2.html.node import *)进行全局导入。或者“核心”包含在另一个包中?也许这应该是本地导入(from .core.parsers2.html.node import *)?你知道吗

我在XP上的PYTHONPATH也不太走运。您可能需要为include提供一个相对路径,或者可以将目录添加到syspath:

sys.path.append('biglongdirectory')

不过,我强烈反对。。。相反,这里有this option

相关问题 更多 >