【问题标题】:Import Error on server, but working OK in local machine服务器上的导入错误,但在本地机器上工作正常
【发布时间】:2013-12-10 22:30:03
【问题描述】:

我的项目结构如下:

apps(python package)
      |
      |
      |----------trips(python package)
                   |----__init__.py
                   |----urls.py
                   |----views.py
    project
    manage.py

urls.py 文件有以下导入:

from django.conf.urls import patterns, url
from django.contrib.auth.decorators import login_required

from . import views

该应用程序在本地机器上运行时运行良好(我已经制作了很多这样的应用程序,所以我认为错误不是那么明显,但谁知道) 当我将它上传到生产服务器(使用 python 3 的 Openshift)时,我看到 Django 的调试模板,指出发生了 ImportError:

ImportError at /

cannot import name views

异常所在的行是:

from . import views

我也试过了:

from apps.trips import views 

没有运气... 有什么想法吗?

更新: 这是我的 Python 路径:

Python 路径:

['/var/lib/openshift/52a6379ae0b8cd1b10000001/app-root/runtime/repo',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/distribute-0.6.49-py3.3.egg',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/pip-1.4.1-py3.3.egg',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/app-root/runtime/repo',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/psycopg2-2.5.1-py3.3-linux-x86_64.egg',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/Django-1.6-py3.3.egg',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/django_selectable-0.7.0-py3.3.egg',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/django_autocomplete_light-2.0.0a4-py3.3.egg',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/six-1.4.1-py3.3.egg',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/South-0.8.4-py3.3.egg',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/opt/lib/python33.zip',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/opt/lib/python3.3',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/opt/lib/python3.3/plat-linux',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/opt/lib/python3.3/lib-dynload',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/setuptools-0.6c11-py3.3.egg-info',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/python/opt/lib/python3.3/site-packages',
 '/var/lib/openshift/52a6379ae0b8cd1b10000001/app-root/runtime/repo/wsgi/hector_transporte']

最后一行指向我的项目文件夹(包含应用程序模块的文件夹)。另一个奇怪的是django似乎能找到我的settings.py

我正在使用 python 3 墨盒,因为“这是语言的现在和未来”

【问题讨论】:

  • 您是使用 apache(或类似)还是 django 自己的开发服务器运行应用程序?
  • 本地我试过 Apache 和 Django 的服务器。我认为 OpenShift 使用 uwsgi .. 可以与此有关吗? django 正在收到请求,这是肯定的
  • 我的猜测是您需要将您的项目构建到正确的路径,这些路径可以通过 open shift 搜索。在导入失败之前添加一个 `print syt.path`` 语句,然后查看搜索的内容
  • 这个时候你需要使用python 3墨盒有什么原因吗?我们将在大约 3 周后推出一款新的,它将更加标准。我们甚至有 2.7 购物车的 django 快速入门 - github.com/openshift/django-example
  • 可以登陆机器直接导入views.py吗? ImportError 也可以表明模块内部有问题...

标签: python django python-3.3 importerror openshift


【解决方案1】:

此时您是否有理由需要使用 python 3 墨盒?我们将在大约 3 周后推出一款更加标准的新产品。我们甚至有 2.7 购物车的 django 快速入门 - github.com/openshift/django-example

【讨论】:

  • 为新墨盒+1!但问题是项目缺少依赖项
【解决方案2】:

我没有看到对 {python_home}/Lib/site-packages/django 的引用。您可以尝试将其添加到您的路径中。

【讨论】:

  • 就在那儿:'/var/lib/openshift/52a6379ae0b8cd1b10000001/python/virtenv/venv/lib/python3.3/site-packages/Django-1.6-py3.3.egg',
【解决方案3】:

当您导入的模块出现问题时,可能会出现 ImportError。在这种情况下,服务器上缺少视图模块的依赖项之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2018-03-07
    • 2015-08-28
    • 2011-11-11
    • 1970-01-01
    • 2021-02-09
    • 2023-03-06
    相关资源
    最近更新 更多