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 回答