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 · 3133 次点击
    这是一个创建于 2908 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想把自己用 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   ·   我们的愿景   ·   实用小工具   ·   995 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:47 · PVG 07:47 · LAX 16:47 · JFK 19:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.