TypeError:相对导入需要python中的package参数

时间:2016-10-08 14:33:08

标签: python django python-2.7

我刚开始学习Python(2.7)并面临一个问题。我正在使用Windows 10。

我创建了一个虚拟环境(c:\ virtualenvs \ testenv)并将其激活。我的app文件夹路径是c:\ pyprojects \ pytest。这个文件夹有requirements.txt,列出了所有的包。

提示符如

(testenv) c:\pyprojects\pytest\pip install -r requirements.txt

它在testenv下成功安装所有必需的软件包。然后我运行了以下命令

(testenv) c:\pyprojects\pytest\python manage.py runserver

并收到以下错误 -

Unhandled exception in thread started by <function wrapper at 0x03ABF8F0>
Traceback (most recent call last):

  File "C:\virtualenvs\testenv\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "C:\virtualenvs\testenv\lib\site-packages\django\core\management\commands\runserver.py", line 113, in inner_run
    autoreload.raise_last_exception()
  File "C:\virtualenvs\testenv\lib\site-packages\django\utils\autoreload.py", line 249, in raise_last_exception
    six.reraise(*_exception)
  File "C:\virtualenvs\testenv\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "C:\virtualenvs\testenv\lib\site-packages\django\__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\virtualenvs\testenv\lib\site-packages\django\apps\registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "C:\virtualenvs\testenv\lib\site-packages\django\apps\config.py", line 90, in create
    module = import_module(entry)
  File "c:\python27\Lib\importlib\__init__.py", line 30, in import_module
    raise TypeError("relative imports require the 'package' argument")
TypeError: relative imports require the 'package' argument

现在我检查了文件 - C:\ Python27 \ Lib \ importlib__init __。py并且它说

 if name.startswith('.'):
        if not package:
            raise TypeError("relative imports require the 'package' argument")
        level = 0
        for character in name:
            if character != '.':
                break
            level += 1
        name = _resolve_name(name[level:], package, level)
    __import__(name)
    return sys.modules[name]

我的app文件夹中没有文件,特别是以dot开头的settings.py。是不是我的APP文件夹不包含在主python路径中?或者我错过了什么。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

DJANGO_SETTINGS_MODULE应该是Python模块标识符,而不是文件系统路径。查看django / conf / __ init__py文件,似乎您的设置模块的相对路径无法在那里工作。您需要将其移动到sys.path中列出的目录下面,或者您应该将父目录添加到sys.path并从那里引用您的设置模块。