首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何找到特定python模块对应的文件?

如何找到特定python模块对应的文件?
EN

Stack Overflow用户
提问于 2019-03-04 04:56:36
回答 1查看 66关注 0票数 2

当一个python3程序使用一个模块"m“时,我可以写什么行来让它打印包含"m”源码的文件的位置?

在我的特定示例中,我是通过阅读应用程序( Django -wiki)的源代码来学习django的,其中包含以下代码:

代码语言:javascript
复制
urlpatterns += url(r'', include('wiki.urls'))

我想修改包含wiki.urls的文件(我克隆了django,所以我假设我在某个地方有这个文件)。我以为我找到了它(src/wiki/urls.py),但后来我意识到这个文件主要包含兼容性函数,我所做的更改没有任何效果。因此,我想看看python到底到哪里去找"wiki.urls“。我使用find和grep查找应该在wiki.urls中定义的urls的一部分(例如,"signup"),但这只返回这个“兼容性”文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-04 05:07:56

编辑:简洁明了的回答

快速回答:

在您的示例中,urlpatterns += url(r'', include('wiki.urls'))代码行为Django添加了一个url路径,以评估某些应用程序的'wiki‘。如果其他人正在研究这个问题,那么here就是urls.py文件的源代码。

长长的答案:

wiki.urls.py

代码语言:javascript
复制
# line 51
def get_urls(self):
   ... # gets the root urls & adds all other url patterns
   return urlpatterns

# line 249
def get_pattern(app_name="wiki", namespace="wiki", url_config_class=None):
... # warnings etc...
if url_config_class is None:
    url_config_classname = getattr(settings, 'URL_CONFIG_CLASS', None)
    if url_config_classname is None:
        url_config_class = WikiURLPatterns
    else:
        ... # more warning etc...
        url_config_class = import_string(url_config_classname)
urlpatterns = url_config_class().get_urls()

return urlpatterns, app_name, namespace

wiki.conf.settings中,我们发现

代码语言:javascript
复制
# line 273
#: Dotted name of the class used to construct urlpatterns for the wiki.
#: Default is wiki.urls.WikiURLPatterns. To customize urls or view handlers,
#: you can derive from this.
URL_CONFIG_CLASS = getattr(
    django_settings,
    'WIKI_URL_CONFIG_CLASS',
    None)

因此,您确实找到了正确的文件(src.wiki.urls.py)。从上面的片段可以看出,conf.settings默认将URL_CONFIG_CLASS定义为None。然后,if None url conf将类定义为WikiURLPatterns (第249行),并包括get_urls中定义的url(51行)。在get_urls (以及前面的代码行)中,您可能希望将自己的代码添加到其他urls、模式、视图和应用程序中。

但是,这些设置正在折旧,请参阅文档中的here。所以,在这个项目的Git中挖掘一下,你可以看到他们为现代的Django提供了reimplemented。因此,在wiki.sites.py中,关于urls是如何实例化的,请参阅第75行。

你还质疑注册在哪里?检查wiki.sites.py中的第94行

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54973665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档