BioPython Entrez在作为模块调用时不返回结果

时间:2015-11-26 13:16:49

标签: biopython

我正在尝试使用PubMed的Entrez通过BioPython模块搜索论文。我遇到的问题是,当我将搜索脚本作为独立运行时,它可以工作,但是当我从另一个脚本调用它时,它会返回一个空结果。我已经包含了下面的例子。

PaperSearch.py​​

from Bio import Entrez

def search(query):
    Entrez.email = 'me@example.com'
    handle = Entrez.esearch(db='pubmed',
                        sort='relevance',
                        retmax='50',
                        retmode='xml',
                        term=query)
    results = Entrez.read(handle)
    return results

if __name__ == '__main__':
    results = search('cancer')
    print(results)

Main.py

import PaperSearch

query = 'cancer'
results = PaperSearch.search(query)
print results

这是Windows 7上的Python 2.7。

由于

2 个答案:

答案 0 :(得分:1)

模块文件名是PaperSearch.py​​,但似乎没有导入正确的名称。

将Main.py更改为:

import PaperSearch

query = 'cancer'
results = PaperSearch.search(query)
print results

答案 1 :(得分:0)

为了解决这个问题,我不得不在PaperSearch.py​​中调用def然后返回输出。

PaperSearch.py​​

from Bio import Entrez

def search(query):
    Entrez.email = 'me@example.com'
    handle = Entrez.esearch(db='pubmed',
                    sort='relevance',
                    retmax='50',
                    retmode='xml',
                    term=query)
    results = Entrez.read(handle)
    return results

def start_search(query):
    papers = search(query)

    return papers

if __name__ == '__main__':
    results = search('cancer')
    print(results)

Main.py

import PaperSearch

query = 'cancer'
results = PaperSearch.start_search(query)
print results

不确定这是因为我是在Windows上运行,还是避风港;还没有测试过Linux,因为我现在只在Windows上运行它。