3

___name__Pythonスクリプトの最初に使用しようとしました:

#!/usr/bin/python
# Comments...
# blabla
#

__name__="cigarline_by_pos.py"
__synopsis__ = "cigarline_by_pos.py | INPUT_BAM_FILE  --output OUTPUT_FILE [--output OUTPUT_FILE_R2 --readsplit]"
__example__ = "cigarline_by_pos.py hg18.bam  --output hg18_read1.csv --output  hg18_read2.csv --readsplit"
__date__ = "05/2013"
__authors__ = "Frederic Escudie & Antoine Leleu"
__keywords__ = "SAM Alignment"
__description__ = "Sum by position the status of reads. This provides for example the number of reads that have a mismatch at first base."

__version__ = '2.3.1'


import argparse,re,sys

the rest of the code...

しかし、Pythonは警告を出力します:

cigarline_by_pos.py:29: RuntimeWarning: Parent module 'cigarline_by_pos' not found while handling absolute import
  import argparse,re,sys

そして私はそれが何から来るのか分かりません。

スクリプトで行を削除すると機能することはわかってい___name__ますが、この変数が必要です。

誰かが私を助けることができますか?

4

1 に答える 1

5

__name__スクリプトで設定しないでください。Pythonはすでにそれを設定しており、インポートなどの他の目的で値に依存しています。Pythonスクリプトまたはモジュールの__name__値は変更できますが、変更を試みる前に、実行していることを理解し、Pythonの内部を理解する必要があります。

一般的にも、二重アンダースコア変数を設定しないでください。これらはPython専用に予約されています。__all__モジュールなどで設定可能として文書化されている場合にのみ設定してください。

現在使用されている二重アンダースコア名(dunder名)の概要については、 Pythonデータモデルのドキュメントを参照してください。

于 2013-03-18T16:45:48.830 に答える