案例 | pyinstaller打包 | cxfreeze打包 | |
self.html= os.path.realpath(__file__) | 有问题,获取的是执行的路径 | 有问题,不识别__file__, 使用sys.argv[0]代替__file__ 打包没有任何问题 |
获取脚本的当前路径。不打包该命令没有问题 |
urllib.request.urlopen(self.address).read() |
在多线程获取多个地址时,会有很多地址获取不到数据。在不打包时没有任何问题。 | 无问题,打包状态下也可以正常访问数据 | 获取http的请求,返回数据 |
exit(0) | 打包使用有问题,不识别 | 打包使用有问题,不识别 | 单线程的正常退出,不打包时可以正常使用。一般不使用,用sys.exit()代替 |
sys.exit() | 无问题 | 无问题 | 单线程正常退出。os._exit()即使在某个线程中使用,也会把整个程序停止退出 |
当一个线程完成函数的执行时,它就会退出。另外,还可以通过调用诸如 thread.exit()之
类的退出函数,或者 sys.exit()之类的退出 Python 进程的标准方法,亦或者抛出 SystemExit
异常,来使线程退出。不过,你不能直接“终止”一个线程。
使用抛出SystemExit异常来退出
# python3
Python 3.7.3 (default, Mar 27 2019, 22:11:17)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> raise SystemExit
#退出