2016-04-07 9 views
3

Ich habe Django1.9 mit Python 2.7 installiert. Aber jetzt möchte ich es mit Python3.4 verwenden. Daher habe ich die symbolische Verbindung von Python zu Python 3.4 wie folgt geändert.Django-Modul Importfehler - Python 2.7 vs Python 3.4

sudo ln -s /usr/bin/python3.4 /usr/bin/python 

Da gleiche django mit Python funktioniert 2.7 und 3.4 auch so sollte es funktionieren. Aber jetzt, wenn ich laufen ./mange.py runserver bekomme ich unter Fehler. Aber mit Python 2.7 funktioniert der gleiche Code richtig.

from Helpers import views 
ImportError: No module named 'Helpers' 

Bitte lassen Sie mich wissen, was ist falsch dort? Im Folgenden finden Sie die Projektstruktur.

myproject 
    ├── myproject 
    │ ├── settings.py 
    │ ├── __init__.py 
    │ ├── urls.py 
    │ ├── wsgi.py 
    │ └─── Helpers 
    │   ├── views.py 
    │   └── __init__.py 
    └── manage.py 

Urls.py ist wie folgt.

from django.conf.urls import url 
from Helpers import views 
urlpatterns = [ 
    url(r'^$', views.index, name='index') 
] 

setting.py enthält die folgenden relevanten Informationen.

INSTALLED_APPS = [ 
     'django.contrib.admin', 
     'django.contrib.auth', 
     'django.contrib.contenttypes', 
     'django.contrib.sessions', 
     'django.contrib.messages', 
     'django.contrib.staticfiles', 
     'myproject', 
    ] 

    # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

    # Look for modules here as well. 
    sys.path.insert(0, os.path.join(BASE_DIR, "Helpers")) 

Irgendeine Idee?

+0

'os.path.join (BASE_DIR„Helpers ")' würde normalerweise 'myproject/Helpers' zurückgeben, während du eigentlich' myproject/myproject/Helpers' haben möchtest. – Selcuk

+0

os.path.join (BASE_DIR, 'meinprojekt', "Helfer") hilft auch nicht. Übrigens funktioniert dieser Code mit python 2.7 richtig. – virus

+0

btw BASE_PATH ist setting.py übergeordneten Verzeichnispfad. – virus

Antwort

2

Python 3 hat die Import-Richtlinie geändert. Werfen Sie einen Blick auf this question.

Statt Helpers Verzeichnis sys.path hinzuzufügen, fügen Sie es Eltern:

sys.path.insert(0, os.path.join(BASE_DIR, 'myproject')) 

Oder wie @albar erwähnt - verwenden relativ Import:

from .Helpers import views 
+0

ja .. ich komme es zu wissen und repariere es schon .. thnaks :) – virus