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 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 file
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 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.
Relative imports use dot(.) notation to specify a location. A single dot specifies that the module is in the current directory, two dots indicate that the module is in its parent directory of the current location and three dots indicate that it is in the grandparent directory and so on.
Relative imports make use of dot notation to specify location. A single dot means that the module or package referenced is in the same directory as the current location. Two dots mean that it is in the parent directory of the current location—that is, the directory above.
I came to this question via Google, so I'll answer what helped me (not directly related to the question).
I use importlib
to dynamically import sub-packages given by a string.
import importlib module_name = 'subpackage.i.import' special_module = importlib.import_module(module_name, package=None)
This simply has to be adjusted to
import importlib module_name = 'subpackage.i.import' special_module = importlib.import_module(module_name, package='my_current_pkg')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With