Django中导入Python模块: __init__.py类未加载

2024-09-27 18:02:37 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码在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这么做?在

提前谢谢你,很抱歉这个愚蠢的问题。在

干杯


Tags: 模块fromimportselfinitdeffeedbar
3条回答

Django只是Python:在普通Python中发生的任何事情都不会在Django中发生。在

无论如何,您对问题的诊断是错误的:未能读取模块不会给出您看到的错误。错误消息表示函数对象不包含属性TestingStrategy。这意味着您已经在某个地方将strategy重新定义为函数,而不是最初导入的模块。在

您正在从模块pyalgotrade导入函数strategy,该模块在那里定义。子模块pyalgotrade.strategy被此函数隐藏。在

也许你想写:

import pyalgotrade.strategy as strategy

在第一行。在

修改库并不是一个真正的解决方案,它只是一种黑客行为。看看你得到的错误:

'function' object has no attribute 'BacktestingStrategy'

这不是一个导入问题:您正在将strategy重新定义为一个函数。不仅如此,我刚刚安装了pyalgotrade,并且顺利地完成了以下操作:

^{pr2}$

看看你进口的其他东西,确保你所有的名字都是正确的。在

记住,Django只是python;它并没有做任何不同的事情,你在做错事。(这给了你一个学习的好机会!)在

相关问题 更多 >

    热门问题