我已经安装了 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/