2010-09-30 19 views
0

我想測試一些代碼。主腳本需要從多個子目錄導入。腳本的結構是這樣的(我編輯它,使之清楚,DIR1和2是構建子目錄):如何搜索正確的目錄進口

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 

該腳本一個有一個import語句:

from dir2.script3 import * 

Script3呼籲從進口位於一個或多個目錄或子目錄文件夾中的腳本

所以當運行SET命令時。 。 。 (見上)我沒有輸出。以爲這是我的問題不是代碼問題,我複製DIR2到

C:\PROGRAM FILES\python264 

跑在CMD相同的指令提示,我得到了一些局部輸出

這告訴我,SET PYTHONPATH不工作正如Windows XP中預期的那樣。

我希望這個問題有道理。

針對SLOTT的要求 - 但是,讀了他的問題後,我明白了一個問題是,我不明白,我其實提交兩個命令

注意有一個名爲名爲目錄節點腳本HTML是parsers2的子目錄,這是核心的一個子目錄是在同一級別爲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

'SET PYTHONPATH =「。」'和'python dir1/script2.py'是兩個命令。你說這是一個。你剛剛打了什麼**,你看到了什麼?請複製並粘貼您的整個Windows終端會話。 – 2010-09-30 15:31:33

+0

我對這個問題並不完全確定,但是這裏有一個指向文檔的鏈接:http://docs.python.org/tutorial/modules.html#the-module-search-path – babbitt 2010-09-30 15:33:58

回答

1

的命令set PYTHONPATH=C:\texttool1\builddir1\script2.py應該完美。確保你

  • 類型它們在同一個控制檯命令(或在一個批處理腳本)
  • 使用絕對路徑的文件夾包含模塊

此外,可執行腳本通常是以必須從可執行文件所在目錄執行的方式編寫的。嘗試在其目錄中而不是父文件夾中啓動「extract_section.py」。順便說一句,名稱頂級包「核心」是不尋常的,但代碼從該包執行全局導入(from core.parsers2.html.node import *)。或者是另一個軟件包中的「核心」?也許這應該是一個本地進口(from .core.parsers2.html.node import *)?

+0

非常感謝我花了我一個小時,以達到我明白問題是我不能按預期得到路徑的地步。 – PyNEwbie 2010-09-30 16:03:12

+0

@PyNEwbie:那麼究竟是什麼問題呢?錯誤的工作目錄? – AndiDog 2010-09-30 16:04:34

+0

我認爲這是python解釋器只在PYTHON264中尋找要導入的模塊。與我一起在Linux上開發程序的開發人員在他將代碼發送給我並崩潰之前爲他工作。我猜他必須將他的Python安裝設置爲正確搜索適當的路徑。 – PyNEwbie 2010-09-30 16:07:48

0

我還沒有XP多少運氣與PYTHONPATH無論是。您可能需要給出一個相對路徑的包括,或者可以將目錄添加到SYSPATH:

sys.path.append('biglongdirectory')

它極力勸阻,但...相反,有this option