django.views.generic与pydoc的Python文档

django.views.generic与pydoc的Python文档,python,django,pydoc,Python,Django,Pydoc,当我运行命令时: pydoc django.views.generic 我得到一个错误: problem in django.views.generic - <class 'django.core.exceptions.ImproperlyConfigured'>: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the en

当我运行命令时:

pydoc django.views.generic
我得到一个错误:

problem in django.views.generic - 
<class 'django.core.exceptions.ImproperlyConfigured'>:
Requested setting DEFAULT_INDEX_TABLESPACE, 
but settings are not configured. You must either define 
the environment variable DJANGO_SETTINGS_MODULE or call 
settings.configure() before accessing settings
django.views.generic中的问题 : 请求设置默认索引表空间, 但未配置设置。您必须定义 环境变量DJANGO_SETTINGS_模块或调用 在访问设置之前配置()
如何获取django.views.generic的pydoc文档?

导入许多django的模块会引入依赖于django项目环境的其他模块。创建一个虚拟项目,并使用其设置

$ django-admin.py startproject dummy
$ cd ./dummy
$ DJANGO_SETTINGS_MODULE=dummy.settings pydoc django.views.generic
请注意最后一行,它将环境变量设置为settings.py文件的导入路径。通常,您不需要这个,因为manage.py和wsgi.py为您设置了它,但是pydoc对此一无所知

如果您已经有一个项目,那么显然可以跳过虚拟项目,只使用项目的设置

$ django-admin.py startproject dummy
$ cd ./dummy
$ DJANGO_SETTINGS_MODULE=dummy.settings pydoc django.views.generic

当使用较新版本的Django时,还需要在Django通常可用之前调用。将pydoc封装在脚本中,而不是直接调用pydoc

my_pydoc.py

import django
import pydoc
import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'dummy.settings'
django.setup()
pydoc.cli()
虽然的答案对某些事情有效,但对我自己的应用程序无效,因为我得到了一个
AppRegistryNotReady
异常。我发现我需要在我的应用程序文件中做一些广告曲棍球来让它工作:

import sys
importer = sys.modules['__main__'].__spec__
if importer.name == 'pydoc':
    import django
    django.setup()

最后,它至少对
views.py
有效。其他文件可能需要其他解决方案。这感觉很脆弱并且依赖于版本,但它适用于Django 1.10.2和Python 3.5.2


sys.argv[0]
具有相同的信息,
/usr/lib/python3.5/pydoc.py
,因此可以通过以下方式更简单、更可靠地完成:

import sys, os
if os.path.splitext(os.path.basename(sys.argv[0]))[0] == 'pydoc':
    import django
    django.setup()

在访问设置之前,必须定义环境变量DJANGO\u SETTINGS\u模块或调用SETTINGS.configure()
我应该在哪里定义它?或者如何从终端调用settings.configure()?