новый sys.path в python

1

У меня возникают трудности с импортом script из каталога, который не хранится в sys.path. У меня есть script, сохраненный как test.py в каталоге под названием "Разработка", и я пытаюсь добавить каталог разработки в sys.path, чтобы я мог импортировать функцию из моего текущего script, называемого 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

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

Спасибо.

Теги:
import
sys.path

3 ответа

3
Лучший ответ
  • Если вы выполняете import test, функция, которую вы определили, импортируется в собственное пространство имен, поэтому вы должны ссылаться на нее как test.printline().

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

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

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

1

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

1
from test import println

println()

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

test.println()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню