2010-09-30 1 views
0

Я пытаюсь проверить код. Основной скрипт требует импорта из нескольких подкаталогов. Структура сценариев, как это (я редактировал его, чтобы понять, что dir1 и 2 являются подкаталогами сборки):Как найти правильный каталог для импорта

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

Примечание: Не полное представление.

мне сказали, чтобы проверить Скрипт2 через командную оболочку, перейдите в каталог сборки и введите:

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

Этот скрипт один имеет оператор импорта:

from dir2.script3 import * 

Script3 вызывает импорт из скрипты, которые находятся в одной или нескольких папках каталога или поддиректории

Итак, при запуске команды SET. , , (см. выше) Я не получаю выход. Думая, что это меня проблема не код проблемы, которую я скопировал dir2 в

C:\PROGRAM FILES\python264 

бегали одни и те же инструкции на CMD строку, и я получил некоторый частичный выход

Это говорит мне, что SET PYTHONPATH не работает как и ожидалось в Windows XP.

Надеюсь, этот вопрос имеет смысл.

В ответ на просьбу Слотт в - однако, прочитав его вопрос, я понял, что одна проблема заключается в том, что я не понимаю, что я был на самом деле, представившего две команды

Примечание есть скрипт, названный узел в папку с именем HTML, который является подкаталог parsers2 который является подкаталог сердечника, который находится на том же уровне, как ехр

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. –

+0

Я не совсем уверен в этом вопросе, но вот ссылка на документацию: http: //docs.python.org/tutorial/modules.html#the-module-search-path – babbitt

ответ

1

Команды set PYTHONPATH=C:\texttool1\build и dir1\script2.py должны работать отлично. Убедитесь, что вы

  • им типа, как два команд в одной и той же консоли (или в одной партии сценария)
  • использовать абсолютный путь к папке, содержащей модули

Кроме того, исполняемые скрипты часто записываются таким образом, что они должны выполняться из каталога, в котором находится исполняемый файл. Попробуйте запустить «extract_section.py» в своем каталоге, а не в родительской папке.

Кстати, необычно назвать верхний пакет «ядро», но код выполняет глобальный импорт из этого пакета (from core.parsers2.html.node import *). Или это «ядро», содержащееся в другом пакете?Может быть, это скорее локальный импорт (from .core.parsers2.html.node import *)?

+0

Большое спасибо. Мне потребовалось час, чтобы добраться до точки, где я понял, что проблема в том, что я не получаю путь, как ожидалось. – PyNEwbie

+0

@PyNEwbie: Так в чем же была проблема? Неправильный рабочий каталог? – AndiDog

+0

Я думаю, что интерпретатор python просматривал только PYTHON264 для импорта модулей. Разработчик, который работает со мной, программы на Linux и все работает для него, прежде чем он отправил мне код и разбился. Думаю, он должен установить свой набор Python для правильного поиска соответствующих путей. – PyNEwbie

0

у меня не было много удачи с PYTHONPATH на XP тоже. Вам может понадобиться, чтобы дать относительный путь для включаемых, или вы можете добавить каталог в syspath:

sys.path.append('biglongdirectory')

Это настоятельно не рекомендуется, хотя ... вместо этого, есть this option