2013-04-17 2 views
0

Я пишу Джанго проект с follwing файлов:не может импортировать функцию в Django/Python

ttam_container 
    -utils.py 
    -ttam 
     -views.py 

коды в utils.py модуле:

def random_string(): 
    ... 
def remove_blanks(): 
    ... 


...other functions... 

коды в views.py:

from utils import * 

def get_sequences(request): 
     ... 
    string = random_string() 
     ... 
    sequences = remove_blanks(sequences_with_blanks) 
     ... 

Сообщается об ошибке global name remove_blanks' is not defined. Я думал, что я не импортировал исправление utils.py в первую очередь, но random_string ...

Любая идея, что происходит?

+0

Убедитесь, что в каждом пакете есть файл '__init __. Py', а также – dm03514

+0

, который у меня был ... не отображался здесь –

ответ

2

импорт должен быть:

from utils import remove_blanks 

без .py

+3

А также без подстановочного знака. :) +1 –

+0

я неправильно использовал его здесь ... я написал 'from utils import *' ... –

+1

также, когда я пытаюсь написать его как 'from utils import remove_blanks', сообщает ImportError –

0

Правильный импорт будет:

import sys 
sys.path.append("..") 
from utils import random_string, remove_blanks 

модули должны находиться в одном из каталогов в sys.path. Это инициализируется значением $PYTHONPATH или некоторым значением по умолчанию, если $PYTHONPATH не установлен. Например:

$ python 
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01) 
[GCC 4.3.4 20090804 (release) 1] on cygwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> sys.path 
['', '/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-cyg 
win', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/pytho 
n2.6/lib-dynload', '/usr/lib/python2.6/site-packages'] 

Так что, если ваш модуль не находится в этом пути, вам нужно добавить правильный путь ('..' в данном случае) к sys.path.

Смежные вопросы