Django模块导入错误-python 2.7 vs python 3.4

病毒

我已经用python 2.7安装了django1.9。但是现在我想将它与python3.4一起使用。因此,我修改了python到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"))

任何的想法?

博格丹·克里克(Bogdan Klichuk)

Python 3更改了导入策略。看一下这个问题

而不是将Helpers目录添加sys.path而是添加它的父目录

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

或像提到的@albar一样-使用相对导入:

from .Helpers import views

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章