2012-08-10 39 views
0

我在lpthw this is the link的锻炼50。
并且在很混乱的方式已经下载了lpthw.web框架之后。
我通过编写一个.py文件继续练习。LPTHW EX50:找不到模块utils的

import web 
urls = ('/', 'index') 

app = web.application(urls, globals()) 

class index: 
    def GET(self): 
     greeting = "Hello World" 
     return greeting 

if __name__ == "__main__": 
    app.run() 

,但我得到这个错误:

Traceback (most recent call last): 
    File "bin\app.py", line 1, in <module> 
     import web 
    File "c:\Python31\lib\site-packages\web\__init__.py", line 14, in <module> 
     import utils, db, net, wsgi, http, webapi, httpserver, debugerror 
ImportError: No module named utils 

是什么引起的问题,

我怀疑它是与我至极安装lpthw.web非常混乱的方式(我有一个很多错误,但多次尝试多种方式。) 预先感谢您!
如果有人需要更多的信息评论,所以我可以编辑。

回答

3

我想你忘了阅读安装说明。这种学习指南 python3兼容:从您的系统

Exercise 0: The Setup

You should follow these instructions as exactly as possible. For example, Mac OSX computers already have Python 2, so do not install Python 3 (or any Python).

Make sure you install Python 2 not Python 3.

Warnings For Beginners
A programmer may try to get you to install Python 3 and learn that. You should tell them, "When all of the python code on your computer is Python 3, then I'll try to learn it." That should keep them busy for about 10 years.

删除python3并安装python2.7允许本教程当您安装建议的软件包工作。

否则,找到另一个使用python3 compatable的libararies中的示例的教程。并非所有内容现在都已更新。出于这个原因,许多人坚持使用python2.7。

+0

你为什么要告诉我这个!这是因为compability问题,因为我确实有python3而不是python2,但它直到现在可能还没有造成真正的问题? – user1544624 2012-08-11 08:14:26

+0

我在告诉你,这是你用来教程的网站的直接引用。它不是python3兼容。所以当你开始安装不使用py3的其他软件包时,它们就会失败。许多现有的软件包还没有工作。它在人员更新方面进展缓慢。这就是为什么许多人留在python2.7上。我已经知道你的路径中有python3.1。这是Web框架未安装的原因。删除它并安装python 2.7 – jdi 2012-08-11 15:01:14

1

随着教程的状态,你可以尝试使用easy_installpip命令行安装这将是easy_install lpthw.webpip install lpthw.web

另外请注意,您需要正确引用application
app = application(urls, globals())应该是
app = web.application(urls, globals())
注意^^^部分。

此外,如果你有兴趣的蟒蛇微网的框架,我建议bottle.py,它并不需要安装称为bottle.py

更新它只是一个Python文件
我设法重建问题使用python3,所以jdi是正确的,这里的问题是,python3不与python2向后兼容,一些python2投诉的应用程序将无法正常下python3,反之亦然运行。

在这种情况下python3似乎不包内的支持相对进口,没有找到这个​​这是很有趣。从赛前

使出:

For the second problem, it is proposed that all import statements be absolute by default (searching sys.path only) with special syntax (leading dots) for accessing package-relative imports.

所以lpthw.web尝试导入相对软件包,但它根本不能。 这就是为什么我们得到ImportError: No module named utils因为utils的是包内的相对模块。
即使它可以加载它,它就会与其他非向后兼容性问题绊倒,只是想包内import utils我们得到

>>> import utils 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "utils.py", line 75 
    except KeyError, k: 
      ^
SyntaxError: invalid syntax 

这是关系到这个PEP http://www.python.org/dev/peps/pep-3110/其中规定不同的语法来的except声明。

正如你所看到的,它将是一个主要的障碍,试图将这个软件包迁移到python3中,以便将它留给开发者,这对于很多很多的软件包来说都是如此,为什么python3与以前不同python2,以及主要是因为他们想修补语言尽可能...

暂且坚守python2,最终大多数包将被迁移到python3。

+0

我已经使用pip来安装lpthw.web并且代码已经有了web.appliction(...),但是我很抱歉只是将它复制到了错误的位置。任何想法? – user1544624 2012-08-11 08:11:33

+0

@ user1544624问题是'lpthw.web'不能用于python3,只有python2,我已经更新了答案,我希望它有帮助。 – 2012-08-11 19:43:19