我根据“数据采样器”教程为Orange3创建了一个自定义的“ viewdicom”小部件。其setup.py如下
从setuptools导入设置,find_packages
setup(
version="1.0.0",
name="viewdicom",
packages=find_packages(),
package_data={"viewdicom": ["icons/*.svg"]},
install_requires=["rtk"],
include_package_data=True,
classifiers=["Example :: Invalid"],
entry_points={"orange.widgets": "Radiomics = viewdicom"},
)
我拉了Orange3 Git存储库并为其创建了virtualenv。当我使用“ pip install -e”将小部件安装到该virtualenv中时。然后运行Orange3本身,我可以在其自己的“ Radiomics”类别中正确看到“ viewdicom”小部件。
一切都很好。然后,我尝试使用包装了build-macos-app.sh脚本的以下build.sh脚本从Orange3安装程序构建Mac OSX应用程序:
#!/bin/bash
rm -rf /Applications/Orange3.app
../orange3/scripts/macos/build-macos-app.sh --pip-arg={-e,/Users/ralph/dev/orange3,/Users/ralph/dev/rtk,/Users/ralph/dev/orange3-widgets/rtk/viewdicom,PyQt5} /Applications/Orange3.ap
因此,我的自定义小部件名为“ viewdicom”,它使用了一个名为“ rtk”的库(我自己的)。我不确定这是否是在* .app构建中包含自定义库和窗口小部件的正确方法,但是如果没有它们,我将不会在* .app内容的网站包中看到任何内容。
如果我这样构建应用程序并检查Orange3.app内的site-packages目录的内容: /Applications/Orange3.app/Contents/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
我在“ rtk”中看到以下内容:
package "rtk" site-packages directory structure
以及以下“ viewdicom”
package "viewdicom" site-packages directory structure
它们似乎已安装在Orange3.app中。据我所知,“ installed_files.txt”和“ SOURCES.txt”文件包含正确的源文件。 “ viewdicom”的“ entry_points.txt”文件正确包含
[orange.widgets]
Radiomics = viewdicom
我不确定“ rtk”库。它不是Orange3小部件,也不是应用程序。我不知道它是否还需要一个入口点。
我不明白为什么内置的Orange3.app会正确显示类别“ Radiomics”而不显示小部件“ viewdicom”。
如果有人对build-tacos-app.sh脚本有经验,我将不胜感激。