новый sys.path в python - PullRequest
1 голос
/ 14 мая 2011

У меня проблемы с импортом скрипта из каталога, который не хранится в sys.path.У меня есть сценарий, сохраненный как test.py в каталоге с именем «Development», и я пытаюсь добавить каталог разработки в sys.path, чтобы я мог импортировать функцию из моего текущего сценария с именем index.py.

Вот мой код для index.py:

import sys
sys.path.append ('/Users/master/Documents/Development/')
import test

printline()

printline () определяется в test.py как:

def printline():
    print "I am working"

Вот ошибка, которую я получаю:

Traceback (most recent call last):
  File "/Users/master/Documents/index.py", line 6, in <module>
    printline()
NameError: name 'printline' is not defined

Любые идеи о том, как мне заставить это работать?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 мая 2011
  1. Если вы выполните import test, определенная вами функция импортируется в собственное пространство имен, поэтому вы должны ссылаться на нее как test.printline().

  2. test может быть именем другого модуля в вашем пути Python, и поскольку каталог, который вы вставляете, добавляется к пути, он будет учитываться, только если test больше нигде не будет найдено. Попробуйте вместо этого указать путь к голове sys.path:

    sys.path.insert(0, "...")
    

В ванильном Python виновник, скорее всего, # 1, но если вы не хотите, чтобы ваши сценарии ломались в будущем, вам также следует привыкнуть к # 2.

1 голос
/ 14 мая 2011

используйте from printline import printline, затем используйте его.

1 голос
/ 14 мая 2011
from test import println

println()

или вы можете вызвать println через объект тестового модуля:

test.println()
...