鱼C论坛

 找回密码
 立即注册
查看: 5827|回复: 15

[已解决]关于py文件打包成exe以及抛出异常的问题

[复制链接]
发表于 2019-10-27 17:19:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 1b1n1m 于 2019-10-27 17:21 编辑

我用的VS code安装的pyinstaller Python3本身安装在d盘。现在使用pyinstaller -F xxx.py报错无法识别为命令;有人说是设置环境变量的问题,但是如何设置pyinstaller的环境变量。我还安装了PyLab,也是同样的问题。貌似都是path环境变量的问题。
  1. s = '1b1n1m'
  2. zonghe = 0.0
  3. for i in range(s):
  4.     try:
  5.         zonghe += float(i)
  6.     except TypeError:
  7.         zonghe += 0
  8. print(zonghe)
复制代码



上述代码中使用了TypeError抛出异常为什么还是提示str不能转变为float?
最佳答案
2019-10-27 17:35:36
1b1n1m 发表于 2019-10-27 17:29
我忘了把需求写出来了
  1. s = '1b1n1m'
  2. zonghe = 0.0
  3. for i in s:
  4.     try:
  5.         zonghe += float(i)
  6.     except (TypeError, ValueError):
  7.         zonghe += 0
  8. print(zonghe)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-27 17:23:57 | 显示全部楼层
1. 打开 cmd,切换到 {Python Dir}\Scripts 文件夹,再试一次
2. 楼主粗心,range(len(s)) 写成了 range(s)
s = '1b1n1m'
zonghe = 0.0
for i in range(len(s)):
    try:
        zonghe += float(i)
    except TypeError:
        zonghe += 0
print(zonghe)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-27 17:27:23 | 显示全部楼层
本帖最后由 1b1n1m 于 2019-10-27 17:29 编辑

我的需求是:
#实现一个满足以下规范的函数。请使用try-except代码块
#假设s是个字符串,返回s中十进制数字之和,例如,如果s是a2b3c,则返回5
还是我的整个代码都写错了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 17:28:53 | 显示全部楼层
1b1n1m 发表于 2019-10-27 17:27
额,为什么for i in s都可以print?在这里为啥必须是获取字符串长度呢?

也可以像你那样,也可以像我这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-27 17:29:52 | 显示全部楼层
我忘了把需求写出来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 17:35:36 | 显示全部楼层    本楼为最佳答案   
1b1n1m 发表于 2019-10-27 17:29
我忘了把需求写出来了
  1. s = '1b1n1m'
  2. zonghe = 0.0
  3. for i in s:
  4.     try:
  5.         zonghe += float(i)
  6.     except (TypeError, ValueError):
  7.         zonghe += 0
  8. print(zonghe)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-27 17:36:14 | 显示全部楼层
在powershell下,在Script文件夹下面提示:
找不到命令 pyinstaller,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加 载命令。如果信任此命令,请改为键入“.\pyinstaller”。有关详细信息,请参阅 "get-help about_Command_Precedence"。
还要怎么设置才能不用这么干?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 17:36:19 | 显示全部楼层
注意:回复他人要点击回复下方的【回复】按钮再回复。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 17:39:29 | 显示全部楼层
1b1n1m 发表于 2019-10-27 17:36
在powershell下,在Script文件夹下面提示:
找不到命令 pyinstaller,但它确实存在于当前位置。默认情况 ...

用 cmd 试试?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-27 17:41:08 | 显示全部楼层

也就是说,给float()传入非数字型的字符,会导致两个异常。一个TypeError,一个ValueError。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 17:41:50 | 显示全部楼层
1b1n1m 发表于 2019-10-27 17:41
也就是说,给float()传入非数字型的字符,会导致两个异常。一个TypeError,一个ValueError。

只会触发 ValueError,可以把 TypeError 去掉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-27 17:46:57 | 显示全部楼层
zltzlt 发表于 2019-10-27 17:41
只会触发 ValueError,可以把 TypeError 去掉

是我没有加括号的原因?
在cmd上面可以使用,但是打包过程中报错。
raise error(exception.winerror, exception.function, exception.strerror)
win32ctypes.pywin32.pywintypes.error: (1920, 'LoadLibraryExW', '系统无法访问此文件。')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 17:49:00 | 显示全部楼层
1b1n1m 发表于 2019-10-27 17:46
是我没有加括号的原因?
在cmd上面可以使用,但是打包过程中报错。
raise error(exception.winerror, e ...

我的并没有?

  1. 12252 INFO: Building EXE from EXE-00.toc completed successfully.
复制代码


把你全程在 cmd 的操作发给我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-27 17:53:29 | 显示全部楼层

Microsoft Windows [版本 10.0.18362.418]
(c) 2019 Microsoft Corporation。保留所有权利。

C:\WINDOWS\system32>d:

D:\>cd Python

D:\Python>cd Script
系统找不到指定的路径。

D:\Python>dir
驱动器 D 中的卷是 本地磁盘D
卷的序列号是 0123-4567

D:\Python 的目录

2019/09/10  19:42    <DIR>          .
2019/09/10  19:42    <DIR>          ..
2019/09/10  17:12        26,680,368 python-3.7.4-amd64.exe
2019/09/10  17:10         8,131,761 python374.chm
2019/07/08  20:35         3,748,368 python37.dll
2019/07/08  20:35            58,896 python3.dll
2019/09/10  19:42    <DIR>          include
2019/09/10  19:43    <DIR>          libs
2019/07/08  20:38            30,188 LICENSE.txt
2019/07/08  20:38           692,078 NEWS.txt
2019/09/10  19:43    <DIR>          DLLs
2019/07/08  20:36            99,856 python.exe
2019/07/08  20:36            98,320 pythonw.exe
2019/07/08  19:24            89,752 vcruntime140.dll
2019/09/10  19:43    <DIR>          Lib
2019/09/10  19:43    <DIR>          Doc
2019/09/10  19:43    <DIR>          Tools
2019/09/10  19:43    <DIR>          tcl
2019/09/10  19:44    <DIR>          Scripts
2019/10/08  19:23             1,346 小程序.py
              10 个文件     39,630,933 字节
              10 个目录 121,322,995,712 可用字节

D:\Python>cd  Scripts

D:\Python\Scripts>dir
驱动器 D 中的卷是 本地磁盘D
卷的序列号是 0123-4567

D:\Python\Scripts 的目录

2019/09/10  19:44    <DIR>          .
2019/09/10  19:44    <DIR>          ..
2019/09/10  19:44           102,759 easy_install.exe
2019/09/10  19:44           102,759 easy_install-3.7.exe
2019/09/10  19:44           102,741 pip.exe
2019/09/10  19:44           102,741 pip3.exe
2019/09/10  19:44           102,741 pip3.7.exe
2019/10/13  11:08    <DIR>          __pycache__
2019/10/14  10:47           103,352 epylint.exe
2019/10/13  11:26           103,349 f2py.exe
2019/10/21  19:03           103,347 flake8.exe
2019/10/26  17:48            74,752 futurize.exe
2019/10/26  17:48               492 futurize-script.py
2019/10/14  10:47           103,342 isort.exe
2019/10/13  11:10           103,347 margins.exe
2019/10/26  17:48            74,752 pasteurize.exe
2019/10/26  17:48               496 pasteurize-script.py
2019/10/21  19:03           103,345 pycodestyle.exe
2019/10/21  19:03           103,344 pyflakes.exe
2019/10/26  17:48           103,368 pyi-archive_viewer.exe
2019/10/26  17:48           103,363 pyi-bindepend.exe
2019/10/26  17:48           103,366 pyi-grab_version.exe
2019/10/26  17:48           103,362 pyi-makespec.exe
2019/10/26  17:48           103,347 pyinstaller.exe
2019/10/26  17:48           103,365 pyi-set_version.exe
2019/10/14  10:47           103,350 pylint.exe
2019/10/14  10:47           103,356 pyreverse.exe
2019/10/13  11:08            16,381 runxlrd.py
2019/10/14  10:47           103,352 symilar.exe
2019/10/26  17:41                94 Lambda函数.py
2019/10/27  17:44               891 Lambda函数.spec
2019/10/26  20:45    <DIR>          dist
2019/10/26  20:45    <DIR>          build
2019/10/27  17:35               875 kids.spec
              29 个文件      2,336,129 字节
               5 个目录 121,322,995,712 可用字节

D:\Python\Scripts>pyinstall -F  Lambda函数.py
'pyinstall' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\Python\Scripts>pyinstaller -F  Lambda函数.py
187 INFO: PyInstaller: 3.5
187 INFO: Python: 3.7.5rc1
187 INFO: Platform: Windows-10-10.0.18362-SP0
218 INFO: wrote D:\Python\Scripts\Lambda函数.spec
234 INFO: UPX is not available.
234 INFO: Extending PYTHONPATH with paths
['D:\\Python\\Scripts', 'D:\\Python\\Scripts']
234 INFO: checking Analysis
234 INFO: Building Analysis because Analysis-00.toc is non existent
234 INFO: Initializing module dependency graph...
249 INFO: Initializing module graph hooks...
249 INFO: Analyzing base_library.zip ...
4887 INFO: running Analysis Analysis-00.toc
Traceback (most recent call last):
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32ctypes\pywin32\pywintypes.py", line 35, in pywin32error
    yield
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32ctypes\pywin32\win32api.py", line 43, in LoadLibraryEx
    return _dll._LoadLibraryEx(fileName, 0, flags)
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32ctypes\core\ctypes\_util.py", line 42, in check_null
    raise make_error(function, function_name)
OSError: [WinError 1920] 系统无法访问此文件。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1473.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1473.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Python\Scripts\pyinstaller.exe\__main__.py", line 7, in <module>
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\__main__.py", line 111, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\__main__.py", line 63, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\building\build_main.py", line 844, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\building\build_main.py", line 791, in build
    exec(code, spec_namespace)
  File "D:\Python\Scripts\Lambda函数.spec", line 17, in <module>
    noarchive=False)
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\building\build_main.py", line 243, in __init__
    self.__postinit__()
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\building\datastruct.py", line 158, in __postinit__
    self.assemble()
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\building\build_main.py", line 405, in assemble
    redirects=self.binding_redirects)[1:])
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\depend\bindepend.py", line 231, in Dependencies
    for ftocnm, fn in getAssemblyFiles(pth, manifest, redirects):
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\depend\bindepend.py", line 407, in getAssemblyFiles
    for assembly in getAssemblies(pth):
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\depend\bindepend.py", line 358, in getAssemblies
    res = GetManifestResources(pth)
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\utils\win32\winmanifest.py", line 1005, in GetManifestResources
    return winresource.GetResources(filename, [RT_MANIFEST], names, languages)
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\PyInstaller\utils\win32\winresource.py", line 168, in GetResources
    hsrc = win32api.LoadLibraryEx(filename, 0, LOAD_LIBRARY_AS_DATAFILE)
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32ctypes\pywin32\win32api.py", line 43, in LoadLibraryEx
    return _dll._LoadLibraryEx(fileName, 0, flags)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1473.0_x64__qbz5n2kfra8p0\lib\contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "C:\Users\1b1n1m\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32ctypes\pywin32\pywintypes.py", line 37, in pywin32error
    raise error(exception.winerror, exception.function, exception.strerror)
win32ctypes.pywin32.pywintypes.error: (1920, 'LoadLibraryExW', '系统无法访问此文件。')

D:\Python\Scripts>























































































































小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 17:54:27 | 显示全部楼层
1b1n1m 发表于 2019-10-27 17:53
Microsoft Windows [版本 10.0.18362.418]
(c) 2019 Microsoft Corporation。保留所有权利。

用管理员权限再试一下?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-27 17:55:53 | 显示全部楼层
zltzlt 发表于 2019-10-27 17:54
用管理员权限再试一下?

就是用管理员权限打开的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-5 04:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表