2013-12-23 2 views
0

Я рассмотрел похожие вопросы в stackoverflow перед тем, как задать этот вопрос, и ни один из них не помог мне решить проблему.Импорт классов модели Django - Python

У меня есть проект Django под названием testrun.

-rw-r--r-- 1 pribeiro Users 196608 Dec 5 21:38 db.sqlite3 
drwxr-xr-x 20 pribeiro Users  680 Dec 19 16:14 graphs 
-rw-r--r-- 1 pribeiro Users  250 Dec 4 20:11 manage.py 
drwxr-xr-x 8 pribeiro Users  272 Dec 12 21:57 parser 
drwxr-xr-x 10 pribeiro Users  340 Dec 23 09:56 testrun 

У меня есть приложение под названием graphs, внутри testrun (graphs был добавлен testrun/settings.py как INSTALLED_APPS):

-rw-r--r-- 1 pribeiro Users  0 Dec 4 23:05 __init__.py 
-rw-r--r-- 1 pribeiro Users 739 Dec 5 21:45 admin.py 
drwxr-xr-x 7 pribeiro Users 238 Dec 19 09:07 migrations 
-rw-r--r-- 1 pribeiro Users 3945 Dec 19 09:07 models.py 
-rw-r--r-- 1 pribeiro Users 5057 Dec 19 16:14 parser.py 
drwxr-xr-x 2 pribeiro Users 68 Dec 12 18:33 static 
drwxr-xr-x 3 pribeiro Users 102 Dec 5 22:31 staticfiles 
drwxr-xr-x 3 pribeiro Users 102 Dec 5 22:32 templates 
-rw-r--r-- 1 pribeiro Users 343 Dec 19 15:22 test_parser.py 
-rw-r--r-- 1 pribeiro Users 60 Dec 4 23:05 tests.py 
-rw-r--r-- 1 pribeiro Users 149 Dec 12 18:22 urls.py 
-rw-r--r-- 1 pribeiro Users 287 Dec 12 18:29 views.py 

Я попытался запустить python manage.py shell, а затем:

>>> from testrun.graphs.models import * 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
ImportError: No module named graphs.models 

Поэтому в graphs\parser.py я попытался импортировать класс, присутствующий в models.py, потому что я буду нуждаться в них, когда я разобрать .json файл, который представляет классы в models.py:

from graphs.models import * 

class Parser: 
    def __init__(self, filename=''): 
     self.api_test = APITest() 

и APITest класс в models.py:

import datetime 
from django.db import models 

class APITest(models.Model): 
    #... def goes here 

Когда я исполняю graphs\parser.py я получаю:

$ python parser.py 
Traceback (most recent call last): 
    File "parser.py", line 8, in <module> 
    from graphs.models import * 
ImportError: No module named graphs.models 

Может кто-нибудь объяснить, почему он не работает?

ответ

1

Попробуйте

python manage.py shell 

from graphs.models import * 

и добавить из .models импорта APITest

в parser.py и запустить питона manage.py оболочки

from graphs.parser import Parser 

Для того, чтобы управлять зависимостями в Django лучше использовать python virtualenv.

Если вы просто хотите запустить некоторую логику из Django из командной строки, попробуйте использовать команду «Написание пользовательских команд django-admin». https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

В вашем случае, если вы хотите иметь сценарий my_parser.py вы бы поместить его в графы/управления/команды/папки, и вы можете запустить его как питон управлять my_parser.

Код my_parser будет выглядеть примерно так

from django.core.management.base import BaseCommand, CommandError 
from .models import APITest 

class Command(BaseCommand): 
    args = '<arg1 arg2...>' 
    help = 'Help line ...' 

    def handle(self, *args, **options): 
     ... # You code comes here 
0

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

from testrun.graphs.models import * 

, но это должно быть:

from graphs.models import * 

, потому что ваш PYTHONPATH уже указывает на каталог testrun проекта. Первый импорт будет выглядеть в каталоге testrun/testrun/, я думаю, это не то, что вы хотите.

Второй не работает, потому что я предполагаю, что вы выполните файл из каталога graphs. Если вы выполните файл оттуда, импорт не будет работать, потому что импорт предполагает, что путь python указывает на корневой каталог проекта testrun.

+0

, но я также пытался 'от модели импорта *' и он не – cybertextron

+0

вы пытались 'от graphs.models импорта *' ...? – rednaw

+0

$ питон график/parser.py Traceback (самый последний вызов последнего): Файла "графы/parser.py", строка 8, в от graphs.models импорта * ImportError: модуль не названы graphs.models – cybertextron

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