2011-07-30 22 views
1

我使用Django 1.3.0在Windows XP和使用Python 2.7 ...sys.path中不能添加Django應用

這是我嘗試在sys.path中

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應用程序Django的應用程序在文件夾中:

C:\nginx-1.0.5\html\mysite\testapp 

我創建這個有:

C:\nginx-1.0.5\html\mysite>python manage.py startapp testapp 

錯誤在哪裏。

謝謝。問候。

回答

0

的解決方案是在settings.py

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

,因爲我使用的項目mysite的和應用testapp

0

首先,你爲什麼要把你的應用程序放在一個名爲nginxhtml的目錄中?它既不是。其次,目前尚不清楚你的問題是什麼。你似乎進入殼體,添加一些東西到sys.path,然後再次退出殼。這絕不會起作用:對sys.path的修改僅適用於該會話。如果您想在路徑中添加某些內容,請在每次啓動服務器時執行此操作(例如修改manage.py),或者將其添加到PYTHONPATH環境變量中。

+0

所以,你說:manage.py將修改python路徑...? –

+0

我添加PYTHONPATH環境變量:C:\ nginx-1.0.5 \ html \ mysite> echo%PYTHONPATH% C:\ nginx-1.0.5 \ html \ mysite \ testapp同樣的問題... –

+0

很奇怪,因爲if我使用Python Shell中我得到這個: –

1

我想你可能有一點了解的進口是如何工作的問題關於PYTHONPATH。 PYTHONPATH是sys.path的路徑列表。

任何直接包含在sys.path中列出的路徑中的模塊都可用作頂級導入。如果你有軟件包(文件夾),它們必須包含__init__.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.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中,可以導入爲頂層模塊。

+0

我明白,但你能告訴我爲什麼django-admin.py不工作?它添加在環境變量上的環境系統?也是在sys.path上添加... –