Python 写的脚本分享给其他人,用 docker 还是 pyinstaller 还是 virtualenv? - V2EX
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
wyc9296
V2EX    Python

Python 写的脚本分享给其他人,用 docker 还是 pyinstaller 还是 virtualenv?

  •  
  •   wyc9296 2019-04-07 17:48:05 +08:00 via Android 5013 次点击
    这是一个创建于 2435 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想写一个 windows Python 应用,用户们完全是编程小白(怎么安装 Python 模块都不会)。
    **使用 virtualenv 最简单,直接写一个可以在开发环境用的 flask 网页就行。可是需要发送拷贝的东西太大,包括虚拟环境和 python 的文件夹。(注: 拷贝了这些文件夹之后得写个 exe 小程序把虚拟环境的进入目录修改下)。
    **用 pyinstaller 的话需要写一个 GUI,也简单。但是界面比较丑,而且启动速度贼慢(因为需要以后自动更新应用版本,所以用-F 打包成一个文件)且没办法添加启动等待画面。
    **用 docker 的话需要用户在他们电脑中安装 docker 桌面版,比较麻烦。而且之前我自己安装后重启蓝屏,重装系统才解决,万一搞挂了用户电脑就比较尴尬。
    请大家帮我出出主意吧!
    23 条回复    2019-04-08 17:42:26 +08:00
    Hopetree
        1
    Hopetree  
       2019-04-07 18:00:43 +08:00
    能的话,尽力做成 web 服务,所有问题都解决
    wyc9296
        2
    wyc9296  
    OP
       2019-04-07 18:14:46 +08:00 via Android
    @Hopetree 还没申请到服务器呢。而且就是一个本地的小工具,如果要是给公司外部的客户用呢?
    delectate
        3
    delectate  
       2019-04-07 18:28:13 +08:00   1
    有丰富经验:pipenv
    有一定经验:docker
    没有任何经验:pyinstaller
    不肯付钱:打死。
    KnoDRy
        4
    KnoDRy  
       2019-04-07 18:29:27 +08:00
    面临同样的问题, 目前能考虑到的解决方案是用.bat 来搞, 不过目前效果不太好
    dairoot
        5
    dairoot  
       2019-04-07 18:32:19 +08:00 via Android
    用 py2exe
    tomczhen
        6
    tomczhen  
       2019-04-07 18:35:40 +08:00
    帮前同事写过一个,给他女朋友做的工具。

    PyInstaller 打包,不选单文件(太慢),然后自解压工具打个包,解压完桌面添加一个快捷方式。因为工具是处理图片的,所以只需要把要处理的图片往快捷方式上拖上去就行,文件路径会作为参数传到代码里。

    本来说帮他写个 GUI 的,他说就这样就行了。
    Yourshell
        7
    Yourshell  
       2019-04-07 18:42:11 +08:00
    直接一个文件夹打包所有文件
    wyc9296
        8
    wyc9296  
    OP
       2019-04-07 18:43:19 +08:00 via Android
    @tomczhen 你是说把图片拖到快捷方式运行的 dos 窗口,还是有其他拖拽方法?另外哦,因为我后面需要它自动更新程序的版本,按照你的打包方法,在你打包好的文件夹里面有哪些必要文件需要更新?
    Hopetree
        9
    Hopetree  
       2019-04-07 18:45:08 +08:00
    @wyc9296 那就打包成 exe 吧,这种最无脑,虚拟环境和容器都要搞环境不适合给不会的人用
    tomczhen
        10
    tomczhen  
       2019-04-07 18:45:47 +08:00 via Android
    @wyc9296 直接文件拖到快捷方式上面就行,你可以试试创建一个 HTML 文件往浏览器快捷方式图标上拖过去。
    wyc9296
        11
    wyc9296  
    OP
       2019-04-07 18:52:01 +08:00 via Android
    @Hopetree 恩,各有利弊。虚拟环境的话我可以写个.bat ,自动进虚拟环境,然后在本机的浏览器打开开发环境的网页,超简单。唯一的缺陷就是东西太大了。
    wyc9296
        12
    wyc9296  
    OP
       2019-04-07 18:52:27 +08:00 via Android
    @tomczhen 哦,回头试一下
    sdlearn
        13
    sdlearn  
       2019-04-07 20:18:05 +08:00
    PyInstaller 用过,感觉挺省事的
    tennc
        14
    tennc  
       2019-04-07 20:40:57 +08:00   1
    用 c# 重写~~
    wyc9296
        15
    wyc9296  
    OP
       2019-04-07 20:51:09 +08:00 via Android
    @tomczhen 试过了,原来是这样,哈哈。然后,还是刚才的问题,如果我要让它自动更新版本,该替换哪些文件呢?
    omph
        16
    omph  
       2019-04-07 20:51:15 +08:00   1
    跨平台小工具,python 不是个好选择
    csharp/powershell
    go
    rust
    XIVN1987
        17
    XIVN1987  
       2019-04-07 20:52:22 +08:00
    pyinstaller 还是靠谱的,,用过多次
    qwjhb
        18
    qwjhb  
       2019-04-08 09:38:49 +08:00
    pyinstaller 不一定要 gui 啊 做成 web 服务 exe 开启服务顺便打开个浏览器就好了,要更新的文件独立开就好
    Northxw
        19
    Northxw  
       2019-04-08 14:42:39 +08:00
    如果是懂 Py 的,还是建个 env 吧,最后不管是放 Docker 还是服务器,都比较好
    wyc9296
        20
    wyc9296  
    OP
       2019-04-08 16:26:08 +08:00
    @qwjhb 具体怎么操作呢。我现在的想法是用 python socket 写个简单的开发环境用的 web server,然后用它运行 cgi 脚本;把这个脚本用 pyinstaller 打包成 exe,用户打开后自动运行 web server 并打开浏览器。不知道和你的想法是不是一样?或者我的想法有什么不对的地方?
    jeadong
        21
    jeadong  
       2019-04-08 16:59:16 +08:00
    看到有人说 bat, 年轻的码农可能以为是互联网公司,其实这个才是脚本的老师傅。
    话说我们新来的同事不懂 dos 命令不知道 bat 是啥... ,dir /b 这么好用的命令....
    jeadong
        22
    jeadong  
       2019-04-08 17:01:53 +08:00
    有一个问题我先说下,你有没有考虑过插件库需要更新升级版本的情况?
    我这次就碰到了,pyautogui 居然要在 pycharm 里更新下版本才能继续运行,否则找不到图片点不到按钮...我也不知道是怎么回事,反正 update install 后就好了。
    qwjhb
        23
    qwjhb  
       2019-04-08 17:42:26 +08:00
    我是打包个 flask 项目 url 对应命令 pyinstaller 打包的时候会把需要的库也打包进去的
    至于需要更新的地方,直接加载文本了=-= 虽然不安全 但是都自己用 无所谓了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     834 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:22 PVG 05:22 LAX 13:22 JFK 16:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86