我刚开始学习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路径中?或者我错过了什么。
非常感谢任何帮助。
答案 0 :(得分:1)
DJANGO_SETTINGS_MODULE应该是Python模块标识符,而不是文件系统路径。查看django / conf / __ init__py文件,似乎您的设置模块的相对路径无法在那里工作。您需要将其移动到sys.path中列出的目录下面,或者您应该将父目录添加到sys.path并从那里引用您的设置模块。