相对导入需要'package'参数 [英] Relative imports require the 'package' argument
问题描述
我想使用Sphinx,因此它可以为我的python代码自动生成一个pydoc,但是我收到一个错误。我做错了什么?
I want to use Sphinx so it can automatically generate a pydoc for my python code but I'm getting an error. What an I doing wrong?
conf.py sphinx配置文件
conf.py sphinx config file
import sys
import os
from django.conf import settings
os.environ['DJANGO_SETTINGS_MODULE'] = '../cloud_server.settings'
sys.path.insert(0, os.path.abspath('../cloud_server/cloud_api'))
views.py django文件
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from cloud_api.serializers import UserSerializer, GroupSerializer
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.all()
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
Typeerror 我尝试制作html文件时抛出错误。
Typeerror error thrown when I'm trying to make the html file.
C:\Users\ogward\STUDPROJ\docs\code.rst:3: WARNING: autodoc: failed to import module u'views'; the following exception wa
s raised:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\sphinx-1.2.2-py2.7.egg\sphinx\ext\autodoc.py", line 335, in import_object
__import__(self.modname)
File "C:\Users\ogward\STUDPROJ\cloud_server\cloud_api\views.py", line 1, in <module>
from django.contrib.auth.models import User, Group
File "C:\Python27\lib\site-packages\django\contrib\auth\__init__.py", line 6, in <module>
from django.middleware.csrf import rotate_token
File "C:\Python27\lib\site-packages\django\middleware\csrf.py", line 14, in <module>
from django.utils.cache import patch_vary_headers
File "C:\Python27\lib\site-packages\django\utils\cache.py", line 26, in <module>
from django.core.cache import get_cache
File "C:\Python27\lib\site-packages\django\core\cache\__init__.py", line 69, in <module>
if DEFAULT_CACHE_ALIAS not in settings.CACHES:
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 54, in __getattr__
self._setup(name)
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 49, in _setup
self._wrapped = Settings(settings_module)
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 128, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 33, in import_module
raise TypeError("relative imports require the 'package' argument")
TypeError: relative imports require the 'package' argument
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [ 50%] code
writing output... [100%] index
writing additional files... genindex search
copying static files... done
copying extra files... done
dumping search index... done
dumping object inventory... done
build succeeded, 1 warning.
推荐答案
DJANGO_SETTINGS_MODULE
预计将是 Python模块标识符,而不是文件系统路径。看看 django / conf / __ init__py
文件,似乎你的设置模块的相对路径不会在那里工作。您将需要将其移动到 sys.path
中列出的目录下方,或者您应该将父目录添加到 sys.path
并从那里引用您的设置模块。
DJANGO_SETTINGS_MODULE
is expected to be a Python module identifier, not a filesystem path. Looking at the django/conf/__init__py
file, it seems that a relative path to your settings module won't work there. You will need to move it below a directory listed in your sys.path
, or you should add a parent directory to your sys.path
and reference your settings module from there.
这篇关于相对导入需要'package'参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!