我正在使用pandas进行一些数据分析。我公司的其他人希望以类似的方式处理数据,但不想使用编程语言来完成它。经过大量的谷歌搜索,我找到了Orange,它具有我想让人们做的完美界面。但是,小部件不会执行我们正在查看的任务类型。所以,我决定看看我是否可以为Orange编写自己的小部件来完成任务。
我试图使用Orange3;当我使用WinPython时,这似乎是最好的选择。我必须说,通过创建小部件的文档(对于Orange2)和Orange3小部件的代码相当令人印象深刻 - 编写得非常好,易于使用来实现我想要做的事情。
在编写了几个小部件后,如何将它们导入Orange3?小部件创建教程适用于Orange2(在Python 2.7中),我还没有让它适用于Orange3。
我的项目目前还很小:
dir/
orangepandas/
__init__.py
owPandasFile.py
pandasQtTable.py
setup.py
setup.py目前包含以下内容:
from setuptools import setup
setup(name='orangepandas',
version='0.1',
packages=['orangepandas'],
entry_points={'Orange.widgets': 'orangepandas = orangepandas'}
)
当我在此运行python setup.py install然后尝试打开Orange3画布时,我在新组中看不到我闪亮的新小部件。
答案 0 :(得分:2)
在跟踪Orange3如何导入外部库之后,似乎Orange依赖于现有的实际窗口小部件文件,而不是在egg(zipped)文件中。添加
zip_safe=False
到设置选项允许Orange3正确导入小部件。 Orange3在canvas / registry / discovery.py中的os.path.exists
中使用cache_can_ignore
来检测路径是否存在,如果不存在,则不会尝试导入它。使用zip_safe=False
可确保插件保持未压缩状态,以便可以访问各个文件。
(对于下一个试图做我正在做的事情的人。)