我已经开始使用Eclipe + PyDev作为开发我的第一个Google App Engine应用程序的环境.Eclipse是根据本教程配置的.
一切正常,直到我开始使用memcache.PyDev报告错误,我不知道如何解决它:
alt text http://www.freeimagehosting.net/uploads/fc176c0957.png
错误:导入的未定义变量:get
如何解决这个问题?当然,这只是PyDev检查器的问题.代码正确并在GAE上运行.
更新:
C:\Program Files\Google\google_appengineC:\Program Files\Google\google_appengine\lib\djangoC:\Program Files\Google\google_appengine\lib\webobC:\Program Files\Google\google_appengine\lib\yaml\lib更新2:
我看了一眼,C:\Program Files\Google\google_appengine\google\appengine\api\memcache\__init__.py发现get()没有声明为memcache模块功能.他们使用以下技巧来做到这一点(我没有听说过这种可能性):
_CLIENT = None
def setup_client(client_obj):
"""Sets the Client object instance to use for all module-level methods.
Use this method if you want to have customer persistent_id() or
persistent_load() functions associated with your client.
Args:
client_obj: Instance of the memcache.Client object.
"""
global _CLIENT …Run Code Online (Sandbox Code Playgroud) 我刚下载了wxPython,并从这里运行了一些示例程序.但是,在使用wx.*变量的每一行上,我得到一个"导入错误的未定义变量"
例如,以下程序在第1,4,8行产生五个错误,在第5行产生两个错误:
import wx
class MyFrame(wx.Frame):
""" We simply derive a new class of Frame. """
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(200,100))
self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
self.Show(True)
app = wx.App(False)
frame = MyFrame(None, 'Small editor')
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)
然而,该程序编译和运行完美.我没有对pydev或eclipse做过任何重大修改,而且wxPython安装很新鲜.
当我import MySQLdb使用PyDev插件在Eclipse中编写时,我得到一个未解析的导入.但是,程序运行没有错误.我可以添加一个注释来消除错误,但是处理这个问题的正确方法是什么?
我怎样才能帮助Eclipse知道MySQLdb在那里?
我有一个简短的函数,通过将它与Natural Language Toolkit中的WordNet语料库进行比较来检查单词是否是真正的单词.我从一个验证txt文件的线程调用此函数.当我运行我的代码时,第一次调用该函数时,它会抛出带有消息的AttributeError
"'WordNetCorpusReader' object has no attribute '_LazyCorpusLoader__args'"
Run Code Online (Sandbox Code Playgroud)
当我暂停执行时,同一行代码不会引发错误,因此我假设在我第一次调用时尚未加载语料库导致错误.
我曾尝试使用nltk.wordnet.ensure_loaded()强制加载语料库,但我仍然得到同样的错误.
这是我的功能:
from nltk.corpus import wordnet as wn
from nltk.corpus import stopwords
from nltk.corpus.reader.wordnet import WordNetError
import sys
cachedStopWords = stopwords.words("english")
def is_good_word(word):
word = word.strip()
if len(word) <= 2:
return 0
if word in cachedStopWords:
return 0
try:
wn.ensure_loaded()
if len(wn.lemmas(str(word), lang='en')) == 0:
return 0
except WordNetError as e:
print "WordNetError on concept {}".format(word)
except AttributeError as e:
print "Attribute error on concept {}: {}".format(word, e.message) …Run Code Online (Sandbox Code Playgroud) 我有2个文件main.py和irc.py.
main.py
import irc
var = 1
func()
Run Code Online (Sandbox Code Playgroud)
irc.py
def func():
print var
Run Code Online (Sandbox Code Playgroud)
当我尝试运行main.py时,我收到此错误
NameError:未定义全局名称'var'
如何使它工作?
@Edit
我认为有一个更好的解决方案但不幸的是我找到的唯一一个是制作另一个文件并将其导入两个文件
main.py
import irc
import another
another.var = 1
irc.func()
Run Code Online (Sandbox Code Playgroud)
irc.py
import another
def func():
print another.var
Run Code Online (Sandbox Code Playgroud)
another.py
var = 0
Run Code Online (Sandbox Code Playgroud) 我正在使用Eclipse和Pydev插件在Windows上编写跨平台python脚本.如果当前平台不是NT,则脚本使用os.symlink()和os.readlink()方法.
由于Windows平台上没有os.symlink()和os.readlink()方法,Pydev将它们标记为未定义的变量 - 如下所示:
有没有办法忽略特定的未定义变量名称错误而不修改我的源文件?
编辑:我找到了一种方法来忽略stackoverflow上这个答案的未定义变量错误.
我将保持问题打开,以防有一种方法可以使用项目文件或Pydev设置来解决这个问题.
我有一个使用协议缓冲区的PyDev项目.协议缓冲区文件位于protoc编译器生成的zip文件中.当我运行程序时,一切都有效,但是PyDev会为每个枚举常量报告"导入的未定义变量".例如:
import model_pb2
value = model_pb2.Expression(type = model_pb2.Expression.PARAMETER)
Run Code Online (Sandbox Code Playgroud)
它将枚举常量"PARAMETER"报告为未定义的变量.我的程序中有几十个类似的错误,我想"正确"修复它们(即不是简单地抑制警告.)