У меня возникают трудности с импортом 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 test
, функция, которую вы определили, импортируется в собственное пространство имен, поэтому вы должны ссылаться на нее как test.printline()
.
test
может быть именем другого модуля в вашем пути Python, и поскольку каталог, который вы вставляете, добавляется к пути, он будет учитываться только в том случае, если test
больше нигде не будет найдено. Попробуйте вместо этого вставить путь в голову sys.path
:
sys.path.insert(0, "...")
В ванильном Python виновник, скорее всего, № 1, но если вы не хотите, чтобы ваши скрипты ломались в будущем, вы также должны привыкнуть к # 2.
используйте from printline import printline
, затем используйте его.
from test import println
println()
или вы можете вызвать println через объект тестового модуля:
test.println()