2016-11-22 141 views
0

我試圖用導入錯誤:沒有模塊名爲Django的,sys.path的罰款

python manage.py shell 

配置Django和我得到的錯誤:

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 341, in execute 
    django.setup() 
    File "/usr/lib64/python2.7/site-packages/django/__init__.py", line 27, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/usr/lib64/python2.7/site-packages/django/apps/registry.py", line 85, in populate 
    app_config = AppConfig.create(entry) 
    File "/usr/lib64/python2.7/site-packages/django/apps/config.py", line 123, in create 
    import_module(entry) 
    File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named django 

我已經看到了很多的問題,關於這個錯誤,其中大部分似乎都集中在python的sys.path中沒有包含django路徑的事實上。不過,我的是。當我運行

sudo pip install django 

我得到

Requirement already satisfied: django in /usr/lib64/python2.7/site-packages 

和輸出爲我的sys.path是

['', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib64/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages'] 

所以路徑是絕對有。 這裏有什麼我的選擇?這是一個使用來自Pycharm的SSH的遠程解釋器,它嚴重延遲了我的工作。

+0

安裝django時是否使用虛擬env? –

+0

我沒有,我對虛擬環境相對陌生。當虛擬機上只存在一個python版本時,是否有任何理由使用它? –

+0

https://virtualenvwrapper.readthedocs.io/en/latest/ – PetarP

回答

1

如果which python由普通用戶運行,返回~/bin/python,那麼這是與超級用戶運行的不同的Python,根據您所說的,它是/bin/pythonsudo pip install django作爲超級用戶運行,並在系統的Python環境中安裝Django。之後,執行python manage.py shell時,它會運行另一個Python,而其他Python的環境顯然沒有安裝Django。

如果您運行的是pip install django而沒有sudo它可能有效,但由於您在該機器上擁有超級用戶權限,因此最好是擺脫正常用戶主目錄中的Python安裝,並確保您的系統只有一個Python安裝,直到你真的知道你在做什麼。否則,你會不會使用virtualenv而感到困惑。

編輯:我不同意許多評論,告訴你使用virtualenv。沒有它,你會感到困惑。我們首先簡化問題。刪除你創建的所有virtualenvs(你通過刪除目錄來做到這一點)並忘記關於virtualenv的一切。註銷並重新登錄(這將確保virtualenvs被禁用)。不要修改您的manage.py,原來它沒問題。使用sudo pip install django安裝Django系統,然後嘗試使用python manage.py shell運行您的Django項目。只有當你得到它的工作,並開始掌握系統,繼續開始使用virtualenv。 Virtualenv是偉大的,但一切都在它的時間。 (virtualenv demystified是我寫的virtualenv的介紹。)

+0

但是,我用pip install django在我的虛擬環境中安裝了django,根本不使用sudo。所以我認爲django安裝在系統和虛擬路徑中......在這一點上刪除用戶的家庭python幫助我嗎? –

+0

看起來你已經在全局安裝了django,而不是在虛擬環境'/ usr/lib64/python2.7/site-packages/django /'中。 –

+0

我剛剛刪除並重新實例化virtualenv。奇怪的是,我可以在python終端中鍵入import django,它工作正常。我的manage.py在頂部有#!/ usr/bin/env python。我會嘗試修改這個,任何其他的想法? –

相關問題