Django-extension runscript 脚本没有(有效)模块
Django-extension runscript No (valid) module for script
我正在尝试创建一个脚本,它将使用从文本文件中提取的信息填充我的模型 families
。
这是我在Whosebug
中的第一个post,如果问题表达不当或格式不正确,请多多包涵,抱歉。
Django 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],
)
当从终端 i 运行:
python manage.py runscript familiespopulate
它returns:
No (valid) module for script 'familiespopulate' found
Try running with a higher verbosity level like: -v2 or -v3
问题一定出在导入模型 families
上,我是 django
的新手,我在 Whosebug
上或其他任何在线地方都找不到任何解决方案。
这就是我寻求您帮助的原因!
你知道模型应该怎么导入吗?
或者......我做错了什么。
重要的信息是脚本 运行s 如果我修改它以打印出参数,而不是在族中创建对象。
为了您的信息和好奇心,我还将 post 此处摘录我正在使用的文本文件。
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.
尝试将空文件 __init__.py
(双下划线)添加到您的 /scripts 文件夹中,然后 运行 使用:
python manage.py runscript scipts.familiespopulate
除了添加 init.py 之外,您不应该在 运行 方法中传递任何参数。
def run():
<your code goes here>
感谢有用的评论。
我以这种方式修改了我的代码:
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],
)
这就是全部。现在它工作顺利。
我想向所有人确认我的文件:familiespopulate.py 与文件 init.py
在文件夹脚本中
当我输入
时,问题似乎得到了解决
file_path = "/Users/work/Desktop/StructuRNA/website/scripts/RFAMfamily12.1.txt"
在 运行 函数内,从 运行(file_path) 中删除参数 file_path。
我的代码的另一个修改是 open(file_path, 'r') 中的参数 r,在它被 open(file_path, 'rb') 之前应该对应读取二进制文件。
我也遇到了完全相同的错误,我尝试了上面的所有解决方案,但遗憾的是对我没有用。然后我意识到我的错误,我找到了。
在脚本文件中(在 script/ 文件夹中)我为函数使用了不同的名称,应该命名为 'run'。所以,如果你收到这个错误,请确保你也检查了它。
我正在尝试创建一个脚本,它将使用从文本文件中提取的信息填充我的模型 families
。
这是我在Whosebug
中的第一个post,如果问题表达不当或格式不正确,请多多包涵,抱歉。
Django 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],
)
当从终端 i 运行:
python manage.py runscript familiespopulate
它returns:
No (valid) module for script 'familiespopulate' found
Try running with a higher verbosity level like: -v2 or -v3
问题一定出在导入模型 families
上,我是 django
的新手,我在 Whosebug
上或其他任何在线地方都找不到任何解决方案。
这就是我寻求您帮助的原因!
你知道模型应该怎么导入吗? 或者......我做错了什么。
重要的信息是脚本 运行s 如果我修改它以打印出参数,而不是在族中创建对象。
为了您的信息和好奇心,我还将 post 此处摘录我正在使用的文本文件。
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.
尝试将空文件 __init__.py
(双下划线)添加到您的 /scripts 文件夹中,然后 运行 使用:
python manage.py runscript scipts.familiespopulate
除了添加 init.py 之外,您不应该在 运行 方法中传递任何参数。
def run():
<your code goes here>
感谢有用的评论。 我以这种方式修改了我的代码:
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],
)
这就是全部。现在它工作顺利。 我想向所有人确认我的文件:familiespopulate.py 与文件 init.py
在文件夹脚本中当我输入
时,问题似乎得到了解决file_path = "/Users/work/Desktop/StructuRNA/website/scripts/RFAMfamily12.1.txt"
在 运行 函数内,从 运行(file_path) 中删除参数 file_path。
我的代码的另一个修改是 open(file_path, 'r') 中的参数 r,在它被 open(file_path, 'rb') 之前应该对应读取二进制文件。
我也遇到了完全相同的错误,我尝试了上面的所有解决方案,但遗憾的是对我没有用。然后我意识到我的错误,我找到了。
在脚本文件中(在 script/ 文件夹中)我为函数使用了不同的名称,应该命名为 'run'。所以,如果你收到这个错误,请确保你也检查了它。