2016-12-30 4 views
1

Я пытаюсь создать сценарий, который заполнит мою модель families информацией, извлеченной из текстового файла. Это мой первый пост в StackOverflow, пожалуйста, будьте осторожны, извините, если вопрос не слишком хорошо выражен или неправильно отформатирован.Django-extension runningcript Нет (действительный) модуль для скрипта

Джанго V 1.9 и работает на Python 3,5
Django-расширения установлены

Это моя модель: это в приложение под названиемbrowse

from django.db import models 
from django_extensions.db.models import TimeStampedModel 


class families(TimeStampedModel): 
    rfam_acc = models.CharField(max_length=7) 
    rfam_id = models.CharField(max_length=40) 
    description = models.CharField(max_length=75) 
    author = models.CharField(max_length=50) 
    comment = models.CharField(max_length=500) 
    rfam_URL = models.URLField() 

Вот у меня есть мой сценарий familiespopulate.py. Позиционируется в каталоге PROJECT_ROOT/scripts.

import csv 
from browse.models import families 

file_path =  "/Users/work/Desktop/StructuRNA/website/scripts/RFAMfamily12.1.txt" 

def run(file_path): 
    listoflists = list(csv.reader(open(file_path, 'rb'), delimiter='\t')) 
    for row in listoflists: 
     families.objects.create(
       rfam_acc=row[0], 
       rfam_id=row[1], 
       description=row[3], 
       author=row[4], 
       comment=row[9], 
     ) 

Когда из терминала я бегу:

python manage.py runscript familiespopulate 

возвращается:

No (valid) module for script 'familiespopulate' found 
Try running with a higher verbosity level like: -v2 or -v3 

Проблема должна быть в импорте модели families, я новичок в django, и я не могу найти любое решение здесь на StackOverflow или в другом месте в Интернете. Вот почему я прошу вашей помощи!

Знаете ли вы, как следует импортировать модель? Или ... Я делаю что-то еще неправильно.

Важная информация заключается в том, что скрипт выполняется, если я изменяю его, чтобы ПЕЧАТЬ параметры, вместо создания объекта в семействах.

Для информации и любопытства Я также опубликую здесь экстракт текстового файла, который я использую.

RF00001 5S_rRNA 1302 5S ribosomal RNA Griffiths-Jones SR, Mifsud W, Gardner PP Szymanski et al, 5S ribosomal database, PMID:11752286 38.00 38.00 37.90 5S ribosomal RNA (5S rRNA) is a component of the large ribosomal subunit in both prokaryotes and eukaryotes. In eukaryotes, it is synthesised by RNA polymerase III (the other eukaryotic rRNAs are cleaved from a 45S precursor synthesised by RNA polymerase I). In Xenopus oocytes, it has been shown that fingers 4-7 of the nine-zinc finger transcription factor TFIIIA can bind to the central region of 5S RNA. Thus, in addition to positively regulating 5S rRNA transcription, TFIIIA also stabilises 5S rRNA until it is required for transcription. NULL cmbuild -F CM SEED cmcalibrate --mpi CM cmsearch --cpu 4 --verbose --nohmmonly -T 24.99 -Z 549862.597050 CM SEQDB 712 183439 0 0 Gene; rRNA; Published; PMID:11283358 7946 0  0.59496 -5.32219 1600000 213632 305 119 1 -3.78120 0.71822 2013-10-03 20:41:44 2016-04-21 23:07:03 

Это первая строка и результат извлечения из listoflists является:

RF00002 
5_8S_rRNA 
5.8S ribosomal RNA 
Griffiths-Jones SR, Mifsud W 
5.8S ribosomal RNA (5.8S rRNA) is a component of the large subunit of the eukaryotic ribosome. It is transcribed by RNA polymerase I as part of the 45S precursor that also contains 18S and 28S rRNA. Functionally, it is thought that 5.8S rRNA may be involved in ribosome translocation [2]. It is also known to form covalent linkage to the p53 tumour suppressor protein [3]. 5.8S rRNA is also found in archaea. 

ответ

0

Помимо добавления init .py вы не должны передавать какие-либо параметры в методе запуска.

def run(): 
    <your code goes here> 
+0

Спасибо за ответ, The init.py является присутствует в каталоге сценария. Я попытался переместить определение file_path внутри def run(), но выполнение по-прежнему возвращается с этой ошибкой: (.VirEnvStructuRna) work @ pboccaletto  ~/Desktop/StructuRNA/веб-сайт   мастер ●  python manage.py шаблоны подкачки Исключение при запуске run() в 'scripts.familiespopulate' – Peter

+0

Является ли ваша папка с сценариями в каталоге, где находится manage.py? –

+0

Да. Я решил проблему. И сейчас я отправлю решение. – Peter

1

Попробуйте добавить пустой файл __init__.py (двойной подчеркивание) в папку/scipts и работать с:

python manage.py runscript scipts.familiespopulate 
+0

Я попытался выполнить ваш код, но результат тот же. питон manage.py RunScript scipts.familiespopulate Нет (действительный) модуль для сценария «scipts.familiespopulate» найдено Попробуйте запустить с более высоким уровнем детальности, как: -V2 или -v3 – Peter

0

Благодарим за полезные комментарии. я изменил свой код таким образом:

import csv 
from browse.models import families 


def run(): 
    file_path = "/Users/work/Desktop/StructuRNA/website/scripts/RFAMfamily12.1.txt" 
    listoflists = list(csv.reader(open(file_path, 'r'),delimiter='\t')) 
print(listoflists) 
for row in listoflists: 
    families.objects.create(
       rfam_acc=row[0], 
       rfam_id=row[1], 
       description=row[3], 
       author=row[4], 
       comment=row[9], 
    ) 

Это все. Теперь он работал плавно. Я хочу подтвердить всем, что мой файл: familypopulate.py был в скрипте папки с файлом init.ру

Проблема, казалось, решена, когда я ставлю

file_path = "/Users/work/Desktop/StructuRNA/website/scripts/RFAMfamily12.1.txt" 

Внутри функции запуска, удаление параметра FILE_PATH от выполнения (FILE_PATH).

Еще один модификатор моего кода был аргументом r внутри open (file_path, 'r'), прежде чем он был открыт (file_path, 'rb'), который должен интерпретировать двоичный код.

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

  • Нет связанных вопросов^_^