2012-03-01 32 views
1

我有这样的代码:如何定义'HTTPCookieProcessor'全局名称?

class API(object): 

     def __init__(self): 
      self.baseuri = "http://api.xxx.xxx" 
      self.cj = cookielib.CookieJar() 
      self.cp = urllib2.HTTPCookieProcessor(self.cj) 
      self.opener = urllib2.build_opener(self.cp) 

的错误是:NameError: global name 'HTTPCookieProcessor' is not defined怎么来的? P.S:

>>> a = api.API() 
    Traceback (most recent call last): 
     File "<stdin>", line 1, in <module> 
     File "C:\Python27\lib\lib\xxxxx\api.py", line 9, in __init__ 
     self.cp = urllib2.HTTPCookieProcessor(self.cj) 
    NameError: global name 'HTTPCookieProcessor' is not defined 
+4

发布的代码不会给你那个错误。你能纠正发布的代码并包含完整的追溯? – AdamKG 2012-03-01 17:40:36

回答

0

答案很可能是包含在接到您的api.py文件的顶部,当你在你的问题将代码粘贴剪切三个行左右。如果我猜的话,我会说,他们看起来是这样的:

import cookielib 
import urllib2 
# <blank line> 

虽然我不会感到惊讶,如果import urllib2线实际上是不同的东西,这是莫名其妙地导致了问题。如果是这种情况,请尝试用import urllib2替换您所拥有的任何内容;否则,你可以发布完整的文件吗?

+0

我修好了! :)错误是:我在PythonDir/Lib文件夹中有一个名为lib的文件夹,所以我有PythonDir/Lib/lib。所以,我通过将其重命名为PythonDir/Lib/mylib来修复:) – DrStrangeLove 2012-03-08 17:09:19

+0

哦,我错过了C:\ Python27 \ lib \ lib \ xxxxx \ api.py的意义。通常您不希望在C:\ Python27 \目录中包含用户级代码。把它放在My Documents或其他地方的某个地方,然后使用%PYTHONPATH%环境变量告诉python除了标准库之外它应该在My Documents \ mylib中查找。请参阅:http://docs.python.org/using/windows.html#excursus-setting-environment-variables – 2012-03-08 18:00:27

+0

你是什么意思的用户级代码?应用程序代码我将它放在PythonDir/Lib中,因为它是库代码(不是应用程序) – DrStrangeLove 2012-03-08 18:15:17