我在Fedora上这样做
问题:
(sandbox)[root@localhost mysite]# django-admin.py runserver
Error: Could not import settings 'mysite.settings' (Is it on sys.path?): No module named mysite.settings
设置virtualenv
mkdir pythonenv # that's the /home/yeukhon/pythonenv/*.*
cd pythonenv
virtualenv --no-site-packages --distribute sandbox
安装Django
pip install -E sandbox django
# changing mode of /home/yeukhon/pythonenv/sandbox/bin/django-admin.py to 755
# Successfully installed django
在/ home / yeukhon / pythonenv / sandbox 下
bin include lib mysite
在lib下
You have /lib/python2.7/site-packages/django/*.*
创建项目很好
(sandbox)[root@localhost sandbox]# django-admin.py startproject mysite
# the path is now /home/yeukhon/pythonenv/sandbox/mysite/*.*
无法运行服务器
django-admin.py runserver
Error: Could not import settings 'mysite.settings' (Is it on sys.path?): No module named mysite.settings
沙箱下的Python Shell (遵循本指南:How to troubleshoot - ImportError: Could not import settings 'mysite.settings' when deploying django?)
(sandbox)[root@localhost mysite]# python
Python 2.7.2 (default, Oct 27 2011, 01:36:46)
[GCC 4.6.1 20111003 (Red Hat 4.6.1-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> import os
>>> os.environ['DJANGO_SETTINGS_MODULE']
'mysite.settings'
>>> os.path.exists('/home')
True
>>> os.path.exists('/home/yeukhon/pythonenv/sandbox/mysite')
True
>>> os.path.exists('/home/yeukhon/pythonenv/sandbox/mysite/settings.py')
True
>>> from django.core.management import setup_environ
>>> import mysite.settings
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mysite.settings
>>> setup_environ(mysite.settings)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'mysite' is not defined
>>> print sys.path
['',
/home/yeukhon/pythonenv/sandbox/lib/python2.7/site-packages/distribute-0.6.14-py2.7.egg',
'/home/yeukhon/pythonenv/sandbox/lib/python2.7/site-packages/pip-0.8.1-py2.7.egg',
'/home/yeukhon/pythonenv/sandbox/lib/python27.zip',
'/home/yeukhon/pythonenv/sandbox/lib/python2.7',
'/home/yeukhon/pythonenv/sandbox/lib/python2.7/plat-linux2',
'/home/yeukhon/pythonenv/sandbox/lib/python2.7/lib-tk',
'/home/yeukhon/pythonenv/sandbox/lib/python2.7/lib-old',
'/home/yeukhon/pythonenv/sandbox/lib/python2.7/lib-dynload',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/home/yeukhon/pythonenv/sandbox/lib/python2.7/site-packages'
我需要做些什么来纠正这个问题?谢谢你的时间。
修改
感谢您的回复。
我尝试了以下内容:
(sandbox)[root@localhost mysite]# export PYTHONPATH="/home/yeukhon/pythonenv/sandbox/"
(sandbox)[root@localhost mysite]# export PYTHONPATH="/home/yeukhon/pythonenv/"
(sandbox)[root@localhost mysite]# deactivate
[root@localhost mysite]# source ../bin/activate
(sandbox)[root@localhost mysite]# django-admin.py runserver
Error: Could not import settings 'mysite.settings' (Is it on sys.path?): No module named mysite.settings
>>> sys.path
['',.... '/home/yeukhon/pythonenv'.....]
它现在在python路径上。但我仍然无法运行服务器。
集中式Django项目
是。这是一个很好的建议。 所以我想我需要做的就是“创建一个名为mydjango的目录,然后在mydjango中创建项目”。但是需要更改/添加哪些命令?我愿意学习好的做法。
非常感谢。
解决方案(添加到环境变量)
PYTHONPATH=$PYTHONPATH:path-to-your-directory
# PYTHONPATH=$PYTHONPATH:/home/yeukhon/pythonenv/sandbox/
答案 0 :(得分:5)
最后一行告诉你所有你需要知道的事情。要导入mysite.settings
,mysite
的父目录必须在您的PYTHONPATH上。目前还没有。
FWIW,将项目实际存储在 virtualenv目录中并不常见。通常,您将所有项目放在PYTHONPATH上的目录中。然后,只需加载你需要的所有功能,以及所有功能。事实上,virtualenv最好的部分是它们可以互换;也就是说,您可以轻松地在多个不同的virtualenv环境中运行相同的项目(例如在不改变您的正常virtualenv的情况下测试Django的新版本),但同样,您希望将项目放在一个集中的位置,而不是在特定的virtualenv目录中
答案 1 :(得分:3)
不要将django-admin.py
用于runserver,或者确实用于startproject
以外的任何其他内容。请改用manage.py runserver
。这为你设置了所有相关的路径,然后就可以了。