我正在尝试使用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。
由于
答案 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上运行它。