python调试,并找出变量从何而来

2024-04-24 17:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在修改wikipedia python模块,该模块位于: https://pypi.python.org/pypi/wikipedia/

实际上,我希望能够将它指向另一个基于wikimedia的站点,该站点也支持相同的API调用(这非常常见)。你知道吗

中定义了一个全局变量维基百科.py在随后针对语言域更新的包中,您可以在此处看到详细信息:

https://github.com/goldsmith/Wikipedia/blob/master/wikipedia/wikipedia.py

有趣的是:

如果我修改维基百科.py(我将pip安装到站点包中)要完全更改API\uurl,它仍然被设置为旧值。你知道吗

使用pdb单步遍历代码,它发生在正则表达式导入之后,这让我觉得新代码没有“卡住”或发生。我尝试过删除已编译的python pyc文件,但没有效果。你知道吗

一旦我在交互模式下启动python,导入wikipedia,看看API\uurl的值,它不是我设置的值。我肯定错过了什么明显的东西,这让我很烦恼。你知道吗

Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import wikipedia
>>> wikipedia.API_URL
u'http://en.wikipedia.org/w/api.php'

这里还有一些我不明白的地方。你知道吗

有必要把“u”作为字符串的一部分吗?为什么在运行时设置变量对这两种情况都不起作用(包括u或not)。我知道u表示unicode,但我不确定手动设置变量时是否应该设置,或者是否需要设置。你知道吗

Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import wikipedia
>>> wikipedia.API_URL
u'http://en.wikipedia.org/w/api.php'
>>> wikipedia.API_URL = 'http://example.com/w/api.php'
>>> wikipedia.search("Barack")
[u'Barak (given name)', u'Barack Obama', u'Inauguration of Barack Obama', u'First inauguration of Barack Obama', u'Nationwide opinion polling for the United States presidential election, 2012', u'Barack Obama Presidential Center', u'Political positions of Barack Obama', u'Barack (disambiguation)', u'Statewide opinion polling for the United States presidential election, 2008', u'Barack Obama presidential campaign endorsements']
>>> wikipedia.API_URL = u'http://example.com/w/api.php'
>>> wikipedia.search("Barack")
[u'Barak (given name)', u'Barack Obama', u'Inauguration of Barack Obama', u'First inauguration of Barack Obama', u'Nationwide opinion polling for the United States presidential election, 2012', u'Barack Obama Presidential Center', u'Political positions of Barack Obama', u'Barack (disambiguation)', u'Statewide opinion polling for the United States presidential election, 2008', u'Barack Obama presidential campaign endorsements']

编辑:哦,天哪,这太尴尬了。我忘了我最初是从github下载包的,这个版本实际上是默认导入的,因为它和我正在处理的项目位于同一个目录中。伊克斯。你知道吗

打印wikipedia.文件显示了一个相对路径,我假设该路径位于site packages目录中。错误的假设!你知道吗


Tags: oftheapihttpurlforwikipediaunited
1条回答
网友
1楼 · 发布于 2024-04-24 17:21:05

如果print wikipedia.__file__给出了要查找的文件名,为什么不在导入后设置API_URL?你知道吗

import wikipedia
wikipedia.API_URL = "http://de.wikipedia.org/w/api.php"

编辑:我忘了提,因为我发现这很明显:在中搜索API_URL维基百科.py和其他文件。您会注意到它是在set_lang()中设置的,因此所有调用都将覆盖您的手动设置。您可能只想使用set_lang(your_domain)!你知道吗

相关问题 更多 >