请教下 python3 跨平台,以及提供他人使用遇到的几个问题 - 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
a412739861
V2EX    Python

请教下 python3 跨平台,以及提供他人使用遇到的几个问题

  •  
  •   a412739861 2016-05-17 00:03:39 +08:00 3620 次点击
    这是一个创建于 3473 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想把自己用 Python3 写的一个论坛脚本提供给其他人使用,碰到几个跨平台的问题。
    可能是搜索思路不对,就像上次那样,明明一个方法解决了我的问题,但是我翻着文档却傻傻不知道……

    • 打包程序:
      mac 使用下面通过 pyinstaller 打包成功,可以直接让没有 Python3 的机子运行,所以 mac 上很简单就完成了。 但在虚拟机下使用 pyinstaller 打包 exe 时,折腾好久完成了( pip 安装的 pywin32 运行时总出错,最后居然 pywin32.exe 手动安装成功)。运行后, warning 的 txt 文件里报警挺多的。
      强行运行,报错太多,我这儿是缺 dll ,朋友那是无法定位程序输入点之类的……总之,不忍直视。估计就解决这两个,也会出现其他问题。

    折腾了半天累死了,偷懒又想了一个绕过的办法,让使用者安装 Python3 。因为在 windows 下安装 Python3 时,发现只是安装的话,还是很简单。
    那么 pyinstaller 能否打包依赖,而不是打包解释器呢? 或者有没有其他的办法能够让使用者只需要安装 Python3 ,而不需要安装那么多依赖就能运行的办法?


    • 用户自由度:
      如果打包出来了,似乎没办法让使用者自主调用那个方法,比如签到,回帖单独让用户决定调用,只能我写死了? 其实我还想留出文件让用户自己输入账号密码的,不过似乎通过读取同一目录下的某个文件,也能够做到了(临时现学的,打包完以后的话,还没试过……) 主要是试手(偷懒)作为业余使用,所以 Python 了解不太多……

    pyinstaller 是我尝试(失败)次数比较多的,感觉自己搜索找不出来了,也可能是我搜索关键字不对? 所以问问,能给个中文 /英文关键字也可以。 目的就是想让最大化降低使用者的门槛。

    第 1 条附言    2016-05-18 23:26:49 +08:00
    总结:安装环境问题……

    在同事的电脑上打包成功空的 Hello world ,可以运行。

    一开始似乎是因为我的 pip 没有升级,安装 pyinstaller 的时候缺少了什么东西。
    所以导致我一开始用 pyinstaller 打包的时候,出错,后续安装 pywin32 以后,给朋友运行报错,似乎是因为对方 VC 什么的依赖没装,换了一个人就能运行了。
    所以大概是环境问题+依赖问题,打包我写的程序的话,依赖尝试各位说的 pip install -r requirements.txt ,在 windows 上打包应该就没问题了。
    也算是解决了,各位说的都对……自己没踩过足够多的坑,答案摆在眼前都不知道。
    11 条回复    2016-05-17 21:23:11 +08:00
    fy
        1
    fy  
       2016-05-17 00:59:28 +08:00   1
    当然有啊,把你用的库拷贝出来,加到你源码里就好了。
    简单的办法比如说用一些工具自动生成 requirements.txt ,然后弄个 env ,里面的那些东西就是你需要的全部库。
    kokutou
        2
    kokutou  
       2016-05-17 02:20:58 +08:00 via Android   1
    试试 nuitka 编译?
    Kilerd
        3
    Kilerd  
       2016-05-17 08:56:37 +08:00 via Android   1
    用户自由度那一块又不是问题。是个人 python 设计水平的问题
    pimin
        4
    pimin  
       2016-05-17 09:11:41 +08:00 via Android   1
    如果对方可以安装 Python ,那还是很简单的。
    直接把依赖放到项目目录,然后提供下载就好了
    并不需要什么工具
    a412739861
        5
    a412739861  
    OP
       2016-05-17 09:59:01 +08:00
    @fy
    简单的拷贝加到源码里面?
    弄 requirement 和 env 的话,我看 pyinstaller 里面的确有这部分配置。但是不清楚怎么做,其实我好奇 pyinstaller 能不能做到,不附带 Python ,而只带依赖和源码,使用者只安装 Python 即可。
    @pimin
    直接拷贝出来,放到项目里,运行就可以,按照 1L 说的,应该还要一些其他设置吧。


    @kokutou 我尝试下,正在缓慢阅读英文文档……

    @Kilerd 我知道是水平问题啊,我写的时候都是一路 Google 的,感觉找到对应关键词都很难,描述都描述不好,所以求教,一般是什么解决办法。
    我想到比较简单的方法是同目录下建个文件,让用户按照格式把内容写进去,然后我到时候去读取。本来有点想做到,有些安装那样,在命令行里面就让用户输入内容,然后根据这些内容进行下一步操作,不过没成功。
    fy
        6
    fy  
       2016-05-17 13:00:09 +08:00
    @a412739861 不是带 env ,是本地生成一个 env ,这里面的东西正好就是你要拷贝进去的东西。不用你再一个个挑库,还要小心是不是某个库缺了。
    snoopygao
        7
    snoopygao  
       2016-05-17 14:36:08 +08:00 via iPhone
    我用 pyinstaller 在 win 下一点问题都没有,打包成单文件 exe 然后让别人运行妥妥的
    snoopygao
        8
    snoopygao  
       2016-05-17 14:37:26 +08:00 via iPhone   1
    建议你先编写一个简单的 print 打包一下,也许是哪儿安装的问题
    myisjon
        9
    myisjon  
       2016-05-17 16:25:40 +08:00   1
    建议用 pip 生成生成你用到的包罗,比如 pip freeze > requirements.txt,换一个环境的时候用 pip install -r requirements.txt 自动安装你程序需要的包,就解决依赖问题了,当然如果遇到包编译问题,就要具体解决了。
    a412739861
        10
    a412739861  
    OP
       2016-05-17 21:13:10 +08:00
    @snoopygao
    尝试了下你的思路,果然打包 print.py 也不行,感觉还是环境的问题。

    @fy
    额,所以怎么生成这一个,只是简单的拷在一个目录里面总不行吧……
    (我好像还不知道去哪拷,不过找找应该没问题……多坑坑)

    @myisjon
    我想尽量减少使用者的门槛,用 pip 感觉有点麻烦吧。不过怎么算是用 pip 生成包呢?
    a412739861
        11
    a412739861  
    OP
       2016-05-17 21:23:11 +08:00
    @myisjon 哦,已经搜索到,抱歉,跑步(走路)回来脑子发晕,把 pip 想成 pyinstaller 了,一下子没反应过来……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3189 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 11:52 PVG 19:52 LAX 03:52 JFK 06:52
    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