2014-12-10 133 views
0

使用virtualenv,讓它工作[我認爲],但沒有任何運氣試圖導入模塊。 在文件makotest.py,我有:Python導入錯誤「No module named template」

from mako.template import Template 

位於我的主文件夾,在virtualenv中的文件夾:VENV

安裝鯖就好了,畫中畫凍結:

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

殼,我看到(venv)所以它應該是正確的? 我跑了SYSPATH它激活並獲得:

'/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以及初始化文件中的「灰鯖鯊」文件夾。

但每次運行'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 
+0

等待我很困惑。你的目錄結構是什麼樣的?因爲這對我的作品時,我*保持所有mako文件在我的venv * – Greg 2014-12-11 00:16:14

+0

也......你激活你的virtualenv? – Greg 2014-12-11 00:17:03

+0

@Greg yup!那麼,使用:$ source bin/activate – House3272 2014-12-11 00:20:07

回答

1

你的問題缺乏充分蟒蛇回溯所以我只能回答這個基礎上我的理解。

事實上,你的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> 
+0

對不起,mako.py正是我給我的測試文件命名的哈哈。我清理它並添加了跟蹤。 – House3272 2014-12-11 01:18:28

+0

ahhhh nvm,我想給它起個名字mako.py是導致這個問題的原因,當我第一次開始測試時,我把它稱爲makotest.py,但後來有點厭倦了輸入那個哈哈。懶惰...... – House3272 2014-12-11 02:43:51