2012-03-01 67 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