我正试图在Vista中运行IPython笔记本.我相信我使用easy_install 安装了所有必要的依赖项(在此列出).IPython运行正常.但是当我尝试运行IPython笔记本时,一切都很好,但是一旦我尝试做任何事情,内核就会死掉.我收到以下令人困惑的错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Python27\lib\site-packages\ipython-0.11-py2.7.egg\IPython\zmq\__init__.py", line 25, in <module>
minimum_pyzmq_version, pyzmq_version))
ImportError: IPython.zmq requires pyzmq >= 2.1.4, but you have 2.1.11
Run Code Online (Sandbox Code Playgroud)
2.1.11> = 2.1.4所以我不确定问题是什么.2.1.11是pyzmq的最新版本(这里是项目页面).
[更新:谢谢@ThomasK.我已经在运行IPython 0.12,但我在IPython和pyzmg上运行了easy_install --upgrade并修复了它.
我试图理解分配Python类对象的变量与该类对象的__name__属性之间的关系.例如:
In [1]: class Foo(object):
...: pass
...:
In [2]: Foo.__name__ = 'Bar'
In [3]: Foo.__name__
Out[3]: 'Bar'
In [4]: Foo
Out[4]: __main__.Bar
In [5]: Bar
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-962d3beb4fd6> in <module>()
----> 1 Bar
NameError: name 'Bar' is not defined
Run Code Online (Sandbox Code Playgroud)
所以看起来我已经改变了__name__类的属性,但我不能用它来引用它.我知道这是一个有点普通,但可能有人解释之间的关系Foo和Foo.__name__?
我突然开始在我的Python SQLAlchemy应用程序中看到一个错误,我无法弄清楚导致它的原因.我的代码看起来像这样:
from sqlalchemy import create_engine
from sqlalchemy import Column
from sqlalchemy import ForeignKey
from sqlalchemy import Integer
from sqlalchemy import MetaData
from sqlalchemy.ext.declarative import declarative_base
def loadConnection(connection_string, echo=False):
engine = create_engine(connection_string, echo=echo)
Base = declarative_base(engine)
Session = sessionmaker(bind=engine)
session = Session()
return session, Base
connection = yaml.load('connection.yaml')
session, Base = loadConnection(connection['connection'], connection['echo'])
class Foo(Base):
__tablename__ = 'foo'
id = Column(Integer(11), primary_key=True)
Run Code Online (Sandbox Code Playgroud)
当我运行此脚本时,我收到以下错误:
Traceback (most recent call last):
File "ephem/database_interface.py", line 52, in <module>
class Foo(Base):
File "ephem/database_interface.py", line 54, …Run Code Online (Sandbox Code Playgroud) 我在使用方法构建 Flask-SQLAlchemy 查询时遇到问题,该like()方法应该使用 SQLLIKE语句构建查询。
根据 SQLAlchemy文档,like可以在这样的列上调用该方法:
select([sometable]).where(sometable.c.column.like("%foobar%"))
Run Code Online (Sandbox Code Playgroud)
我有一个 ModelClass 子类化 Flask-SQLAlchemydb.Model类。定义如下:
class ModelClass(db.Model):
# Some other columns ...
field1 = db.Column(db.Integer(), db.ForeignKey('my_other_class.id'))
rel1 = db.relationship("MyOtherClass", foreign_keys=[field1])
Run Code Online (Sandbox Code Playgroud)
然后我有一个循环,我正在动态构建过滤器。在循环之外,我使用这些过滤器来过滤查询。我的循环内部略有修改,如下所示:
search_term = '%{}%'.format(search_string)
my_filter = getattr(ModelClass, field_string).like(search_term)
Run Code Online (Sandbox Code Playgroud)
这会在使用该like方法的行中引发错误:
NotImplementedError: <function like_op at 0x101c06668>
Run Code Online (Sandbox Code Playgroud)
它会为任何文本字符串引发此错误。Python的文档的NotImplementedError说:
此异常源自 RuntimeError。在用户定义的基类中,抽象方法在需要派生类覆盖方法时应引发此异常。
这不是AttributeError,所以我认为该like方法存在,但还有其他错误,我不确定是什么。
更新
现在我正在更仔细地查看模型定义,我认为问题可能在于我是在关系而不是Column类型上这样做。
我看到type(getattr(ModelClass, field_string))了:
<sqlalchemy.orm.attributes.InstrumentedAttribute object at 0x102018090>
Run Code Online (Sandbox Code Playgroud)
由于这不是一种Column类型,我查看了其值field_string …