2016-04-07 21 views
3

私はpython 2.7でdjango1.9をインストールしました。でも今はpython3.4でそれを使いたいと思っています。したがって、以下のように、PythonのシンボリックリンクをPython 3.4に変更しました。djangoモジュールのインポートエラー - python 2.7 vs python 3.4

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

同じdjangoはPython 2.7と3.4でも動作するので、動作するはずです。しかし、今私が./mange.py runserverを実行すると、私は以下のエラーに陥っています。 しかしPython 2.7では、同じコードが適切に動作します。

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

私に何が間違っているか教えてください。以下はプロジェクトの構造です。

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

Urls.pyは以下のようになります。

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

setting.pyには関連情報が含まれています。

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")) 

+0

'os.path.join(BASE_DIR、「ヘルパー"myproject/myproject/Helpers"を持っている間は通常 'myproject/Helpers'を返します。 – Selcuk

+0

os.path.join(BASE_DIR、 'myproject'、" Helpers ")も役に立ちません。上記のように、このコードはpython 2.7で正しく動作します。 – virus

+0

btw BASE_PATHは、親ディレクトリの設定パスです。 – virus

答えて

2

Python 3がインポートポリシーを変更しました。 this questionをご覧ください。

代わりのsys.pathHelpersディレクトリを追加し、それは親の追加:

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

または言及@albarのような - 相対インポートを使用します。

from .Helpers import views 
+0

はい..私はそれを知って来て、すでにそれを固定.. thnaks :) – virus