想打包个.py 去其它电脑运行,在编译目录 warn-testrun.txt 里缺的也太多了吧?

2019-10-14 14:45:10 +08:00
 qazwsxkevin

missing module named 'xxx'的内容也太多了,起码>150 行
贴个前 10 的内容:

missing module named 'multiprocessing.forking' - imported by c:\users\administrator\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_multiprocessing.py (optional)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.SimpleQueue - imported by multiprocessing (top-level), concurrent.futures.process (top-level)
missing module named 'win32com.gen_py' - imported by win32com (conditional, optional), c:\users\administrator\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_win32comgenpy.py (top-level)
missing module named pyimod03_importers - imported by PyInstaller.loader.pyimod02_archive (delayed, conditional), c:\users\administrator\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_pkgres.py (top-level)
missing module named 'com.sun' - imported by pkg_resources._vendor.appdirs (delayed, conditional, optional)
missing module named com - imported by pkg_resources._vendor.appdirs (delayed)

脚本状态下,程序运行没有问题
就拿第一个“'multiprocessing”来说,我手动 pip install multiprocessing 都报错了。。。

    ERROR: Command errored out with exit status 1:
     command: 'c:\users\administrator\appdata\local\programs\python\python36\python.exe' -c 'import sys, setuptools, to
kenize; sys.argv[0] = '"'"'C:\\Temp\\pip-install-bi2klhf4\\multiprocessing\\setup.py'"'"'; __file__='"'"'C:\\Temp\\pip-
install-bi2klhf4\\multiprocessing\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().repl
ace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-
info
         cwd: C:\Temp\pip-install-bi2klhf4\multiprocessing\
    Complete output (6 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Temp\pip-install-bi2klhf4\multiprocessing\setup.py", line 94
        print 'Macros:'
                      ^
    SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Macros:')?
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

很像是 python 版本的问题。。。 但又不能降 python 版本这么折腾。。。

要编译成功,有何办法???

4776 次点击
所在节点    Python
12 条回复
littlespider89
2019-10-14 14:50:25 +08:00
你运行的这个程序用到的 multiprocessing 是 python2.7 的,只能用 python2.7,你在 3.6 里用不了
multiprocessing 3.6 都内置了,pip 安装以前的当然装不上
qazwsxkevin
2019-10-14 15:00:00 +08:00
@littlespider89 看来没办法了,有几个用到的库,只能在 3.6 以上使用。。。。
skt041959
2019-10-14 17:07:07 +08:00
我来歪个楼,楼主的用户名“administrator”,怕不是暴露了你还在用 XP 😂?
Jirajine
2019-10-14 17:23:18 +08:00
@skt041959 新版 Windows 也一直沿用 administrator 这个用户名啊。。
用这种默认用户名,可以降低终端 prompt,文档作者,配置文件,日志,路径,编译调试信息等各方面暴露个人信息的可能。
ysc3839
2019-10-14 17:25:40 +08:00
@Jirajine 没记错的话从 Windows 7 开始就会让用户自己创建一个系统账号了,不会直接使用 Administrator。
另外不想暴露个人信息的话你还可以把用户名设成 123 abc 之类的。
ysc3839
2019-10-14 17:26:41 +08:00
@skt041959 Python 3.5 是最后支持 XP 的版本。
dantelovepizza
2019-10-14 17:28:44 +08:00
你需要 pyinstaller
Jirajine
2019-10-14 17:31:24 +08:00
@ysc3839 印象中用 7 的时候还是用的 administrator,可能不是官方安装系统,后来到 10 是引导建一个普通用户,但也可以手动启用 administrator 并登录啊。。
qazwsxkevin
2019-10-14 21:29:12 +08:00
@skt041959 Win7,我做系统的时候特意用回 Administrator
@dantelovepizza 这不就是用了 pyinstaller 来编译的么?
wangyzj
2019-10-14 22:34:26 +08:00
你需要 pyinstaller +1
renmu
2019-10-15 08:46:25 +08:00
你需要新建一个干净的虚拟环境,pyinstaller 好像会把所有的包都打包进去
flynaj
2019-10-15 10:35:33 +08:00
要彻底解决,只有换 golang

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/609161

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX