sys.path未添加django应用程序
我在Windows XP下使用django 1.3.0,并使用Python 2.7 这是我尝试在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
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。。。