2015-09-02 87 views
1

我想要拿起一箇舊的Django項目,我的目標是看看我能在開發服務器上的計算機上運行什麼。我得到:爲什麼我不能在Django項目中導入模塊?

 
Inner Sanctum ~/pragmatometer $ python manage.py runserver 
Traceback (most recent call last): 
    File "manage.py", line 10, in 
    execute_from_command_line(sys.argv) 
    File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line 
    utility.execute() 
    File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command 
    commands = get_commands() 
    File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 107, in get_commands 
    apps = settings.INSTALLED_APPS 
    File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 54, in __getattr__ 
    self._setup(name) 
    File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 49, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 132, in __init__ 
    % (self.SETTINGS_MODULE, e) 
ImportError: Could not import settings 'pragmatometer.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named pragmatometer.settings 

下面是一些命令行輸出:

 
Inner Sanctum ~/pragmatometer $ /bin/pwd 
/Users/jonathan/pragmatometer 
Inner Sanctum ~/pragmatometer $ echo $PYTHONPATH 
/Users/jonathan 
Inner Sanctum ~/pragmatometer $ python 
Python 2.7.10 (default, Jul 14 2015, 19:46:27) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import pragmatometer 
Traceback (most recent call last): 
    File "", line 1, in 
ImportError: No module named pragmatometer 
>>> import pragmatometer.settings 
Traceback (most recent call last): 
    File "", line 1, in 
ImportError: No module named pragmatometer.settings 
>>> 

,我應該怎麼做,我不是? (或者,因爲它是一個老項目,我應該只是一個全新的項目啓動?)

感謝,

+0

實用程序目錄是一個包(它是否有一個'__init __。py'文件),並有一個設置模塊內的某處(它是否有'settings.py'文件)? –

+0

LS *的.py輸出: __init__.py \t manage.py \t settings.py \t views.py functions.py \t models.py \t urls.py – JonathanHayward

+0

如果你從'嘗試'進口pragmatometer.settings'〜 '? –

回答

0

每一個Django項目配備了一個settings.py文件,和Django會拒絕運行,或加載模型,直到加載settings.py文件。

settings.py文件需要位於模塊中,並且是當前PYTHONPATH和env的一部分。應該爲它設置變量DJANGO_SETTINGS_MODULE。

例如:

# assuming your file is under /myproject/mywebsite/settings.py 
export PYTHONPATH=/myproject/ 
export DJANGO_SETTINGS_MODULE=mywebsite.settings 
0

一個Django項目通常看起來是這樣的(如Django的1.4及以上,我認爲)。

myproject 
    myproject 
     __init__.py 
     settings.py 
    app1 
    app2 

您可以lookaroundonline關於這方面的例子和變化。

請注意,有一個myproject目錄,包含頂級myproject下的設置。

你的看起來都像這樣嗎?

或者您最初的目標是使用不同佈局的舊版Django嗎?

如果你嘗試這樣做:

PYTHONPATH=/Users/jonathan python 
import pragmatometer 

就像你的第二個代碼塊,它要處理/Users/jonathan作爲一個Python包,尋找/Users/jonathan/__init__.py,這可能不存在),因此它贏得不檢查/Users/jonathan/pragmatometer/settings.py

0

我發現了罪魁禍首,或至少是一個罪魁禍首。我忽略了(在我的.bashrc中)「導出」,現在我正在處理另一個問題。

相關問題