django 模块导入错误 - python 2.7 与 python 3.4

标签 django python-2.7 python-3.x django-models

我已经安装了 django1.9 和 python 2.7。但现在我想将它与python3.4一起使用。因此,我将 python 的符号链接(symbolic link)修改为 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"))

有什么想法吗?

最佳答案

Python 3 更改了导入策略。看看this question

不要将 Helpers 目录添加到 sys.path,而是添加它的父目录:

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

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

from .Helpers import views

关于django 模块导入错误 - python 2.7 与 python 3.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36465870/

相关文章:

django - 我对 app.py 中使用的就绪函数感到困惑

python - 替换 SQL 查询中的值

python - 大型正则表达式模式中的正则表达式 'sre_constants.error: bad character range'

python-2.7 - python : urllib2 put request returns 301 error

json - 将 JSON 转换为 Python 对象 : how to handle DateTime conversion?

python - 是否可以为 PySequence_Fast 循环仅调用一次 PyObject_CallMethod?

django - 使用自定义模板时 Django 表单字段的初始值

带有 order_by 的 Django 查询,不同的和对 Postgresql 的限制

python 从两个单独的列表中计数对,列表中没有唯一值(我认为集合不起作用)

django - 类' __str__ 的 Python 测试覆盖率