sys.path未添加django应用程序

sys.path未添加django应用程序,django,Django,我在Windows XP下使用django 1.3.0,并使用Python 2.7 这是我尝试在sys.path上添加路径django应用程序的过程 C:\nginx-1.0.5\html\mysite>python Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for m

我在Windows XP下使用django 1.3.0,并使用Python 2.7

这是我尝试在sys.path上添加路径django应用程序的过程

C:\nginx-1.0.5\html\mysite>python
Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.path
['', 'C:\\Python27\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C
:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\P
ython27\\lib\\site-packages']
>>> sys.path = ['C:\\nginx-1.0.5\\html\\mysite'] + sys.path
>>> print sys.path
['C:\\nginx-1.0.5\\html\\mysite', '', 'C:\\Python27\\python27.zip', 'C:\\Python2
7\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib
\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages']
>>> import testapp
>>> ^Z

C:\nginx-1.0.5\html\mysite>python manage.py runserver 8080
Error: No module named testapp

C:\nginx-1.0.5\html\mysite>python
Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.path
['', 'C:\\Python27\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C
:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\P
ython27\\lib\\site-packages']
>>>
django应用程序位于以下文件夹中:

C:\nginx-1.0.5\html\mysite\testapp
我通过以下方式创建此功能:

C:\nginx-1.0.5\html\mysite>python manage.py startapp testapp
错误在哪里


多谢各位。关于。

首先,为什么要将应用程序放在名为
nginx
html
的目录中?两者都不是


其次,不清楚你的问题是什么。您似乎进入了shell,将一些内容添加到
sys.path
,然后再次退出shell。这永远不会起作用:对
sys.path
的修改仅适用于该会话。如果要向路径中添加内容,请在每次启动服务器时都执行此操作,比如修改
manage.py
,或者将其添加到
PYTHONPATH
环境变量中。

首先,为什么要将应用程序放在名为
nginx
html
的目录中?两者都不是


其次,不清楚你的问题是什么。您似乎进入了shell,将一些内容添加到
sys.path
,然后再次退出shell。这永远不会起作用:对
sys.path
的修改仅适用于该会话。如果要向路径添加内容,请在每次启动服务器时都执行此操作,例如通过修改
manage.py
,或将其添加到
PYTHONPATH
环境变量中。

解决方案位于设置.py

INSTALLED_APPS = (
...
'mysite.testapp',   

因为我使用projectmysite和applicationtestapp

解决方案在设置下。py

INSTALLED_APPS = (
...
'mysite.testapp',   

因为我使用projectmysite和applicationtestapp

,所以我认为您可能在理解导入如何与PYTHONPATH相关时有点问题。PYTHONPATH是sys.path中的路径列表

直接包含在sys.path中列出的路径中的任何模块都可以作为顶级导入。如果您有包(文件夹),它们必须包含一个
\uuuu init\uuuuu.py
文件才能导入,除非它们直接位于PYTHONPATH上

现在,除了sys.paths中包含的默认路径外,还包括从中执行第一个python文件的路径。例如:

c:\myapp\my_app.py
        \my_module.py

> python my_app.py
>>> import sys
>>> sys.path
...,"c:\myapp\"...
在django的上下文中,这意味着当您运行manage命令时,manage.py文件所在的目录也包含在PYTHONPATH中。在您的情况下,这似乎很重要,因为似乎manage.py文件所在的任何文件夹都不直接包含testapp目录

/path/to/project/
                manage.py
                settings.py
                mysite/
                      __init__.py
                      testapp/
                             __init__.py
                             models.py
在上面的目录结构中,如果运行以下命令:

python /path/to/project/manage.py shell
>>> import mysite.testapp
>>> import testapp
--- failure ---
原因是testapp未直接包含在sys.paths中列出的任何路径中。然而,mysite是

您可以更改目录结构,如下所示:

/path/to/mysite/
                manage.py
                settings.py
                __init__.py
                testapp/
                       __init__.py
                       models.py


python /path/to/mysite/manage.py shell
>>> import testapp
>>> import mysite.testapp
--- failure ---

现在testapp直接位于sys.path上,可以作为顶级模块导入。

我认为您在理解导入如何与PYTHONPATH相关时可能会遇到一些问题。PYTHONPATH是sys.path中的路径列表

直接包含在sys.path中列出的路径中的任何模块都可以作为顶级导入。如果您有包(文件夹),它们必须包含一个
\uuuu init\uuuuu.py
文件才能导入,除非它们直接位于PYTHONPATH上

现在,除了sys.paths中包含的默认路径外,还包括从中执行第一个python文件的路径。例如:

c:\myapp\my_app.py
        \my_module.py

> python my_app.py
>>> import sys
>>> sys.path
...,"c:\myapp\"...
在django的上下文中,这意味着当您运行manage命令时,manage.py文件所在的目录也包含在PYTHONPATH中。在您的情况下,这似乎很重要,因为似乎manage.py文件所在的任何文件夹都不直接包含testapp目录

/path/to/project/
                manage.py
                settings.py
                mysite/
                      __init__.py
                      testapp/
                             __init__.py
                             models.py
在上面的目录结构中,如果运行以下命令:

python /path/to/project/manage.py shell
>>> import mysite.testapp
>>> import testapp
--- failure ---
原因是testapp未直接包含在sys.paths中列出的任何路径中。然而,mysite是

您可以更改目录结构,如下所示:

/path/to/mysite/
                manage.py
                settings.py
                __init__.py
                testapp/
                       __init__.py
                       models.py


python /path/to/mysite/manage.py shell
>>> import testapp
>>> import mysite.testapp
--- failure ---

现在testapp直接位于sys.path上,可以作为顶级模块导入。

那么,您说:manage.py将修改python路径吗?我添加了PYTHONPATH环境变量:C:\nginx-1.0.5\html\mysite>echo%PYTHONPATH%C:\nginx-1.0.5\html\mysite\testapp同样的问题…很奇怪,因为如果我使用pythonshell,我得到了以下结果:>>>>来自django.conf导入设置>>>来自testapp导入*>>来自testapp导入testapp\u默认回溯(最后一次调用):文件“”,第1行,在ImportError中:无法导入名称testapp\u defaults>>>因此,您说:manage.py将修改python路径?我添加了PYTHONPATH环境变量:C:\nginx-1.0.5\html\mysite>echo%PYTHONPATH%C:\nginx-1.0.5\html\mysite\testapp同样的问题…很奇怪,因为如果我使用pythonshell,我得到了以下结果:>>>>来自django.conf导入设置>>>来自testapp导入*>>来自testapp导入testapp\u默认回溯(最后一次调用):文件“”,第1行,在ImportError中:无法导入名称testapp\u defaults>>>我理解,但您能告诉我为什么django-admin.py不工作吗?是Path vars上的附加环境系统吗?另外还有附加的sys.path…我明白,但是你能告诉我为什么django-admin.py不工作吗?是Path vars上的附加环境系统吗?另外还有加载项sys.path。。。