V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
nevin47
V2EX  ›  Python

web 框架 or QT?

  •  
  •   nevin47 · 2015-11-20 09:59:59 +08:00 · 5721 次点击
    这是一个创建于 3088 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近水了一篇论文,导师觉得非常满意,关于机器学习算法改进的。当然算法改进后对一些问题的处理确实有了一定的性能提升,然后他觉得独乐乐不如众悦乐,让我把这套算法加一个 GUI 写成以后可以留下来给别人用的软件
    😂😂😂😂可是小弟以前是做 PHP 的,现在用 Python 也只停留在命令行写算法的阶段。

    所以来求助一下万能的 V 友们,现在算法的源程序基本已经完成了,调用的库主要是:
    1. numpy
    2. scipy
    3. sci-kit learn

    不知道用 web 框架然后再接入算法可行么,与调用的那些库能兼容么,然后是 Django 、 Flask 还是 web.py 更好?接触了下 Django 发现和 PHP 的开发差距蛮大的,不知道另外两个可要好点

    QT 的话我看有人用这个做过,不过相对 WEB 框架这套就更不熟悉了,有没有熟悉的大神推荐一个学着比较迅速的,因为时间也紧迫……

    Thank All

    39 条回复    2015-11-21 23:51:41 +08:00
    wizardforcel
        1
    wizardforcel  
       2015-11-20 10:18:05 +08:00 via Android
    数据可视化还是 web 比较方便一点 各种现成的 js 库

    我当时拿 java+weka 做了个挖掘的东西 没用 web 所以只能苦逼的用 swing+jfreechart 结果自然是不如用 web 的其他组漂亮

    php 用框架的话其实和 py 差别也不大 只是 php 可以不用框架写 然后就非常非常乱 框架是减少迁移所需的经验以及增强团队交接的这么一个东西
    jadecoder
        2
    jadecoder  
       2015-11-20 10:22:32 +08:00
    如果界面简单的话就直接 tkinter
    seki
        3
    seki  
       2015-11-20 10:28:19 +08:00
    框架可以来简单的,比如 flask 或者 Bottle
    喜欢传统型 gui 的话也有 python-cef 之类的
    wizardoz
        4
    wizardoz  
       2015-11-20 10:30:14 +08:00
    web 和单机给人的感觉上就不是一个级别的。
    如果不想现学 Django 的话,可以找一个消息队列来连接 PHP 和 Python ,用 PHP 来做啊。
    thomaspaine
        5
    thomaspaine  
       2015-11-20 10:35:58 +08:00
    pyQt?
    jimrok
        6
    jimrok  
       2015-11-20 10:37:07 +08:00
    D3 的库?
    nevin47
        7
    nevin47  
    OP
       2015-11-20 11:28:51 +08:00
    @wizardforcel 重点在于 WEB 能接入那些库么,算法必须在这三个库的框架下进行
    nevin47
        8
    nevin47  
    OP
       2015-11-20 11:30:32 +08:00
    @jadecoder tkinter 最后能编译成跨平台的软件么

    @seki 我不知道这些框架能不能接这些第三方库的……

    @wizardoz negative ……太复杂了,不适合分发

    @thomaspaine 能打包么……

    @jimrok D3 是啥……
    ctftemp
        9
    ctftemp  
       2015-11-20 11:32:19 +08:00 via Android
    web.py 非常简单,一天学会。如果你会前端或有人帮你做前端很快就能搞定。 pyqt 不推荐,环境配置太麻烦,难以部署,而且如果没学过 qt 的话学习成本也挺高的。
    Narcissu5
        10
    Narcissu5  
       2015-11-20 11:34:17 +08:00 via Android
    会在客户机上调用系统功能么(比如写文件),没有的话果断 web 吧
    jimrok
        11
    jimrok  
       2015-11-20 11:35:15 +08:00
    nevin47
        12
    nevin47  
    OP
       2015-11-20 11:36:21 +08:00
    @ctftemp 中午吃了饭就试试,前端都不会好意思说自己做过 PHP 么😳


    @Narcissu5 我也偏好 WEB ,比较习惯
    allan888
        13
    allan888  
       2015-11-20 11:42:20 +08:00
    这种软件真的没人在乎界面,能跑起来就谢天谢地了,命令行都行。
    jadecoder
        14
    jadecoder  
       2015-11-20 11:42:58 +08:00
    @nevin47 tkinter 是 python 自带的,不需要编译打包。只要你不调那些 win32 API 就是跨平台的
    jadecoder
        15
    jadecoder  
       2015-11-20 11:43:29 +08:00
    @nevin47 到时候你执行 python 脚本就跳出来一个窗口
    nevin47
        16
    nevin47  
    OP
       2015-11-20 13:40:34 +08:00
    @allan888 要给没有任何程序基础的人用

    @jadecoder 要给没有任何程序基础的人用…… tkinter 能像 Java 那样打包成可执行程序么
    jadecoder
        17
    jadecoder  
       2015-11-20 13:57:57 +08:00
    @nevin47 可以是可以,但是我感觉你搞错方向了,要做个给普通人的 MP3 播放器都是巨大的工程,何况一个机器学习程序。这件事的难度完全不在打包
    Owenjia
        18
    Owenjia  
       2015-11-20 14:01:33 +08:00
    试下 bottle? 上手挺快的。打包可以试下 ex_freeze 。
    zjqzxc
        19
    zjqzxc  
       2015-11-20 15:16:26 +08:00
    如果仅限于 windows , Tkinter 是最简单暴力的选择。 Linux 下需要装 tkinter 库,一个命令的事儿也不麻烦。 mac 下不清楚,可以 import 出来,但好像官方文档说这个 tkinter 不是官方维护的还是什么。。

    其实我想说的是,既然熟悉 php 那就用 php 写,自己怎么方便怎么来;这种没有固定需求的事儿,无论做成什么总要有人吐槽的(用 qt 有人嫌你的界面难看或者不好用,用 python web 有人说还得开浏览器太麻烦),还不如直接用对自己最省时间的方法解决,以后谁有意见谁自己重写。
    wizardforcel
        20
    wizardforcel  
       2015-11-20 15:23:35 +08:00 via Android
    @nevin47 scikit 跟框架并存倒是可以

    但是你这个项目人略少啊 我们当时是一个人实现算法 一个人调参数 一个人搭 web 框架 还有一个人搞可视化 时间富余的话还成 。。
    BUPTGuo
        21
    BUPTGuo  
       2015-11-20 15:27:08 +08:00
    @wizardforcel 感觉正是我现在做的事。。。每次都被老师吐槽图太难看了
    nevin47
        22
    nevin47  
    OP
       2015-11-20 15:39:59 +08:00
    @zjqzxc PHP 去写重构这些算法和模型我选择狗带

    @jadecoder 算法已经完成了,命令行可以跑通,现在需要一个 GUI 来供别人操作而已

    @Owenjia 回头看看,我现在是 mac 下开发,但是要提供给 mac/windows 这两个平台使用,而且需要打包的

    @wizardforcel 算法已经做好了,参数是自动寻优……现在就是要做 web 或者桌面端
    cnkiller
        23
    cnkiller  
       2015-11-20 15:48:00 +08:00 via Android
    这两天在看的东西, web+aauto.web 用 go 两个 exe 完成

    就是客户端不能跨平台
    g00001
        24
    g00001  
       2015-11-20 17:28:17 +08:00
    aardio( aauto ) 做客户端 EXE 小、轻、快、做出来的界面小而美,提供非常多的 web 控件,象 webkit,webform,htmlayout...一堆,而且还带了个 python 解释器支持 python 代码、当然缺点是限于 windows ,但桌面客户端跨平台意义真不大,在 PC 上其他操作系统的占有率基本可以忽略不计。

    跨平台不能发挥专有平台的优势,增加不必要的复杂度,最麻烦的就是体积大,写个记事本软件界面一般般的就近百 MB ,体积大带来的不仅仅是下载传输慢,启动占用资源也大,各种坑就多,浪费的时间就多,欲哭无泪的时候就更多。
    P0P
        25
    P0P  
       2015-11-20 19:10:39 +08:00
    我看不懂有什么难度, v2 的水平也真是醉了。

    最简单的你 python 撸一套 web 前端,顺便调用你后台不就行了,客户机可以打开浏览器直接访问,或者直接 pyqt 撸一发不就可以了,另外用 python 跨平台不是分分钟的事情吗。。有难度吗?
    jzfr
        26
    jzfr  
       2015-11-20 20:33:52 +08:00
    @lazydomino 就你最了不起了,看不起 V2 的水平那你来这里掉架干什么,先看懂别人在说什么再发脾气好吗 ? 你第一次接触 python 就马上能分分钟撸出能给别人用的软件 GUI 还 WEB 前端调用后台?撸了几分钟?
    poke707
        27
    poke707  
       2015-11-20 21:20:26 +08:00
    已有 command line 了吗?试试 https://github.com/chriskiehl/Gooey
    nevin47
        28
    nevin47  
    OP
       2015-11-20 23:29:15 +08:00
    @lazydomino 你了解这几个包么?全是混写的包库随便去调用然后等着报错咯?既然抛出问题一是求助于大牛,二则是想看看大家的讨论积累些经验,你要觉得问题水平不高要不 show me the code ,要不 block 我右拐慢走不送


    @jzfr


    @poke707 回头看看,看起来好黑科技的感觉……
    julyclyde
        29
    julyclyde  
       2015-11-20 23:47:10 +08:00
    python 和裸 PHP 的差别确实较大。不过 PHP 也有框架,以及 python 也可以写裸 CGI

    “算法”类,我总以为会运行较长时间。如果这样,就不适合用 web 了,因为对浏览者、服务器,单次长事件运行都很不友好
    Owenjia
        30
    Owenjia  
       2015-11-20 23:50:17 +08:00
    @nevin47 ex_freeze Mac 和 Windows 下都可以用的呀。
    nevin47
        31
    nevin47  
    OP
       2015-11-21 00:10:34 +08:00
    @julyclyde 确实没有考虑到这个问题,那请问用 QT 写 GUI ,然后打包不同平台下的程序这样靠谱么


    @Owenjia 看了一下,遇到复杂库调用的时候蛮复杂的,研究研究
    zhuangzhuang1988
        32
    zhuangzhuang1988  
       2015-11-21 00:34:45 +08:00
    界面? c#上.
    zonghua
        33
    zonghua  
       2015-11-21 02:30:38 +08:00 via iPhone
    @nevin47 PHP 做密集处理运算是不可能的
    chengzhoukun
        34
    chengzhoukun  
       2015-11-21 02:41:13 +08:00
    flask 挺好的
    daiv
        35
    daiv  
       2015-11-21 08:35:43 +08:00
    @zhuangzhuang1988 界面是不是 c sharp 最简单了,针对 win
    zjqzxc
        36
    zjqzxc  
       2015-11-21 12:39:43 +08:00
    @nevin47 怪我没说清。。
    我并不是说要用 php 重写,只是说把数据的展示部分用 php+一些前端技能展示出来。

    毕竟“展示”功能只是个非核心的内容,没有必要再在这个非核心的东西上浪费过多时间。虽然这样会给以后的使用者带来一定的麻烦。
    shuimugan
        37
    shuimugan  
       2015-11-21 13:48:46 +08:00
    既然是做 php 的,前端技能应该也有,可以考虑下 nw.js ,相当于把 html 打包成 exe,还跨平台,还可以调用 nodejs 的库,只要在里面各种命令执行就可以把代码结合在一起了
    joshz
        38
    joshz  
       2015-11-21 18:42:14 +08:00
    python 做科学计算,如果界面不太复杂,前端就用 TraitsUI 吧。一套 MVC 框架,使用起来比较简单,上手快,界面库可以用 QT 或者 wxWidgets 。
    professorz
        39
    professorz  
       2015-11-21 23:51:41 +08:00
    不是一个难度级别的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2460 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 08:19 · PVG 16:19 · LAX 01:19 · JFK 04:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.