【问题标题】:Python import error "No module named template"Python导入错误“没有名为模板的模块”
【发布时间】:2015-02-09 08:26:21
【问题描述】:

使用 virtualenv,它可以工作 [我认为],但没有任何运气尝试导入模块。 在文件 makotest.py 中,我有:

    from mako.template import Template

位于我的主文件夹中,virtualenv 在文件夹中:venv

安装 mako 就好了,pip freeze:

    Mako==1.0.0
    MarkupSafe==0.23
    argparse==1.2.1
    wsgiref==0.1.2

在 shell 中,我看到了 (venv),所以它应该可以正常工作吗? 我运行了一个激活它的系统路径并得到:

    '/home/username'
    '/home/username/venv/lib/python2.7'
    '/home/username/venv/lib/python2.7/plat-x86_64-linux-gnu'
    '/home/username/venv/lib/python2.7/lib-tk'
    '/home/username/venv/lib/python2.7/lib-old'
    '/home/username/venv/lib/python2.7/lib-dynload'
    '/usr/lib/python2.7'
    '/usr/lib/python2.7/plat-x86_64-linux-gnu'
    '/usr/lib/python2.7/lib-tk'
    '/home/username/venv/local/lib/python2.7/site-packages'
    '/home/username/venv/lib/python2.7/site-packages' 

在该站点包文件夹中,是一个带有 template.py/pyc 以及 init 文件的“mako”文件夹。

但每次我运行“python makotest.py”时,都会出现导入错误。 完全没有思路,请帮忙~


使用回溯更新:
Traceback (most recent call last):
  File "makotest.py", line 1, in <module>
    from mako.template import *
  File "/home/username/venv/makotest.py", line 1, in <module>
    from mako.template import *
ImportError: No module named template

【问题讨论】:

  • 等等,我很困惑。你的目录结构是什么样的?因为当我只是 将所有 mako 文件保留在我的 venv 中 时,这对我有用
  • 还有...你激活你的 virtualenv 了吗?
  • @Greg 是的!好吧,使用:$source bin/activate

标签: python linux python-2.7 virtualenv mako


【解决方案1】:

你的问题缺少完整的python回溯,所以我只能根据我的理解来回答这个问题。

你的 cwd(以及 pythonpath)包含一个 mako.py 文件的事实是你被绊倒的地方。尝试重命名它,并首先删除主目录中的 mako.pyc,然后重新运行它。

基本上,python 正在尝试从您的 mako.py 文件导入,而不是从站点包中的 mako.py 目录导入。

请参阅下面的示例:

    -bash-4.1$ bin/pip freeze
    #...
    mock==1.0.1
    #..
    -bash-4.1$ bin/python
    Python 2.7.3 (default, Apr 10 2013, 09:39:41)
    [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from mock import patch
    in mock.py
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "mock.py", line 3, in <module>
        from mock import patch
    ImportError: cannot import name patch
    >>>
    -bash-4.1$ mv mock.py mock2.py
    -bash-4.1$ rm mock.pyc
    -bash-4.1$ bin/python
    Python 2.7.3 (default, Apr 10 2013, 09:39:41)
    [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from mock import patch
    >>> patch
    <function patch at 0x7f8276a4a7d0>

【讨论】:

  • 啊抱歉,mako.py 就是我命名我的测试文件哈哈。我清理了它并添加了跟踪。
  • ahhhh nvm,我认为将其命名为 mako.py 是导致问题的原因,当我第一次开始测试时,我将其命名为 makotest.py,但后来有点厌倦了打字哈哈。懒惰……
猜你喜欢
  • 2016-07-11
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多