以下代码在python shell中可以正常工作,显示feed对象的内容:
from pyalgotrade import strategy
from pyalgotrade.barfeed import yahoofeed
class MyStrategy(strategy.BacktestingStrategy):
def __init__(self, feed, instrument):
strategy.BacktestingStrategy.__init__(self, feed)
self.__instrument = instrument
def onBars(self, bars):
bar = bars[self.__instrument]
self.info(bar.getClose())
feed = yahoofeed.Feed()
feed.addBarsFromCSV("orcl","data/bistampTicker.csv")
myStrategy = MyStrategy(feed, "orcl")
myStrategy.run()
但是,在Django视图中执行它会导致以下错误:
^{pr2}$其中BacktestingStrategy是在python模块的strategy文件夹内的python路径内的uinit_uuj.py文件中定义的类。在
我对这个问题的理解是,django没有读取uinit_uu.py文件,因此无法正确导入模块(pyalgotrade模块)。在
有没有办法让Django这么做?在
提前谢谢你,很抱歉这个愚蠢的问题。在
干杯
Django只是Python:在普通Python中发生的任何事情都不会在Django中发生。在
无论如何,您对问题的诊断是错误的:未能读取模块不会给出您看到的错误。错误消息表示函数对象不包含属性TestingStrategy。这意味着您已经在某个地方将
strategy
重新定义为函数,而不是最初导入的模块。在您正在从模块
pyalgotrade
导入函数strategy
,该模块在那里定义。子模块pyalgotrade.strategy
被此函数隐藏。在也许你想写:
在第一行。在
修改库并不是一个真正的解决方案,它只是一种黑客行为。看看你得到的错误:
这不是一个导入问题:您正在将
^{pr2}$strategy
重新定义为一个函数。不仅如此,我刚刚安装了pyalgotrade
,并且顺利地完成了以下操作:看看你进口的其他东西,确保你所有的名字都是正确的。在
记住,Django只是python;它并没有做任何不同的事情,你在做错事。(这给了你一个学习的好机会!)在
相关问题 更多 >
编程相关推荐