2016-12-30 12 views
1

私のモデルfamiliesにテキストファイルから抽出した情報を入力するスクリプトを作成しようとしています。 これは私の最初の投稿であるStackOverflowです。ご質問がうまく表現されていない場合や正しくフォーマットされていない場合はご迷惑をおかけください。Django-extension runscriptスクリプトのモジュールがありません

ジャンゴV 1.9とDjango-拡張子が

をインストール
のPython 3.5にこれが私のモデルで実行されている:それはアプリでだがここで私は私のスクリプトfamiliespopulate.pyを持って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() 

と呼ばれます。 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またはオンライン以外の場所で解決策を見つけてください。 これは私があなたの助けを求める理由です!

モデルのインポート方法をご存知ですか? ...私は何か間違っているのですか?

重要な情報は、ファミリにオブジェクトを作成する代わりに、パラメータをPRINTするようにスクリプトを修正するとスクリプトが実行されることです。

あなたの情報と好奇心のために、ここで私が使用しているテキストファイルの抽出を投稿します。

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

.pyを追加する以外は、runメソッドでパラメータを渡すことはできません。

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

おかげで、init.pyは次のとおりです。 のpython manage.py RUNSCRIPT scipts.familiespopulate ません(有効な)モジュールのスクリプトのための「scipts.familiespopulateは」 が高い冗長レベルなどで実行してみてください見つかりましたスクリプトディレクトリにあります。 def run()内のfile_path定義を移動しようとしましたが、実行はこのエラーで返されます。 (.VirEnvStructuRna)work @ pboccaletto〜/ Desktop/StructuRNA/websiteマスター●pythonmanage.py runscript familiespopulate 'scripts.familiespopulate'でrun()を実行しているときの例外 – Peter

+0

scriptsフォルダはmanage.pyのディレクトリにありますか? –

+0

はいそうです。私は問題を解決しました。そして今私は解決策を投稿します。 – Peter

1

てみてください、あなたの/ sciptsフォルダに空のファイル__init__.py(ダブルアンダースコア)を添加して実行します。

python manage.py runscript scipts.familiespopulate 
+0

あなたのコードを実行しようとしましたが、結果は同じです。返信用-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], 
    ) 

これはすべてです。今はスムーズに動作しました。 私のファイル:familiespopulate.pyがファイルを持つフォルダスクリプトに入っていることを皆に確認したい。PY

問題は、実行(FILE_PATH)からパラメータFILE_PATHを取り除く、私は実行関数内

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

を入れたときに解決されるように見えました。

私のコードを変更するもう一つの方法は、オープンバイナリに対応するopen(file_path、 'rb')の前に、open(file_path、 'r')の引数rでした。

関連する問題