我在一个.py文件上有一个小程序,它从两个独立的.xlsx文件中获取数据,使用pandas和numpy处理数据,然后在同一目录中创建一个新文件,并使用os和shutil(如下所示)重命名和移动其中一个旧文件
worked_file_name, worked_file_name_extension = os.path.splitext("Main data file.xlsx")
cwd = os.getcwd()
for filename in os.listdir(cwd):
if filename == worked_file_name+worked_file_name_extension:
shutil.move(os.path.join(cwd, worked_file_name+worked_file_name_extension), os.path.join(cwd + "Old_files", worked_file_name + " " + str(variable) + worked_file_name_extension))
variable
是Main data file.xlsx
内某个系列的值的列表
现在,当我运行pyinstaller --onefile -w py_file_no_spaces.py
在CMD(运行CMD作为admin;路径或文件名上没有空格)我得到以下错误:
C:UsersUsuarioDocumentssubfoldersubfolder>pyinstaller --onefile -w py_file_no_spaces.py
93 INFO: PyInstaller: 4.2
93 INFO: Python: 3.8.6
93 INFO: Platform: Windows-10-10.0.18362-SP0
94 INFO: wrote C:UsersUsuarioDocumentssubfoldersubfolderpy_file_no_spaces.spec
97 INFO: UPX is not available.
99 INFO: Extending PYTHONPATH with paths
['C:\Users\Usuario\Documents\subfolder\subfolder',
'C:\Users\Usuario\Documents\subfolder\subfolder']
125 INFO: checking Analysis
126 INFO: Building Analysis because Analysis-00.toc is non existent
126 INFO: Initializing module dependency graph...
132 INFO: Caching module graph hooks...
142 WARNING: Several hooks defined for module 'win32ctypes.core'. Please take care they do not conflict.
147 INFO: Analyzing base_library.zip ...
2894 INFO: Processing pre-find module path hook distutils from 'C:\Users\Usuario\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\PyInstaller\hooks\pre_find_module_path\hook-distutils.py'.
2895 INFO: distutils: retargeting to non-venv dir 'C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib'
4975 INFO: Caching module dependency graph...
5422 ERROR: base_library.zip could not be created!
Traceback (most recent call last):
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0librunpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0librunpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38Scriptspyinstaller.exe__main__.py", line 7, in <module>
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagesPyInstaller__main__.py", line 114, in run
run_build(pyi_config, spec_file, **vars(args))
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagesPyInstaller__main__.py", line 65, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagesPyInstallerbuildingbuild_main.py", line 725, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagesPyInstallerbuildingbuild_main.py", line 672, in build
exec(code, spec_namespace)
File "C:UsersUsuarioDocumentssubfoldersubfolderpy_file_no_spaces.spec", line 6, in <module>
a = Analysis(['py_file_no_spaces.py'],
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagesPyInstallerbuildingbuild_main.py", line 242, in __init__
self.__postinit__()
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagesPyInstallerbuildingdatastruct.py", line 160, in __postinit__
self.assemble()
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagesPyInstallerbuildingbuild_main.py", line 350, in assemble
create_py3_base_library(libzip_filename, graph=self.graph)
File "C:UsersUsuarioAppDataLocalPackagesPythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0LocalCachelocal-packagesPython38site-packagesPyInstallerdependutils.py", line 67, in create_py3_base_library
with zipfile.ZipFile(libzip_filename, mode='w') as zf:
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0libzipfile.py", line 1251, in __init__
self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: 'C:\Users\Usuario\Documents\subfolder\subfolder\build\py_file_no_spaces\base_library.zip'
我认为最后一个错误(PermissionError: [Errno 13] Permission denied:
)不一定是我应该关注的,因为它必须与ERROR: base_library.zip could not be created!
(没有zip文件创建,因此无法读取)有关
- 不使用-w和——onefile
- 从C:卸载库并将其直接安装到我正在工作的子文件夹中(在观看YouTube视频后,该家伙说全局安装可能会产生问题)
- 引用。py但在另一个文件夹中创建pyinstaller导致,正如在尝试使用pyinstaller时的权限错误(
pyinstaller -w --onefile --name "py_file_no_spaces_tool" "C:UsersUsuarioDocumentssubfoldersubfolderpy_file_no_spaces.py"
在.py文件所在的新文件夹之外以admin身份运行CMD)中所建议的那样
在查看PyInstaller Can't create base_library.zip后,我确实发现了一个特性-当我在IDE上运行print(os.path.exists('C:\Python38-32\build'))
时,我得到False
-此外,print(os.listdir('C:\Python38-32'))
输出['DLLs', 'Doc', 'include', 'keras-master', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python38.dll', 'pythonw.exe', 'Scripts', 'tcl', 'tensorflow-master', 'Tools', 'vcruntime140.dll']
正如你所看到的,我已经将python直接安装到C (C:python38-32
)…我不知道是否a)我应该/是一个好主意(不确定为什么我安装在那里坦率地说),或者b)它影响了整个过程。在浏览了错误信息后,我很好奇,并试图进入C:Program FilesWindowsApps
,但我得到You don't currently have permission to access this folder
也不考虑python安装是一个问题,因为3.8似乎现在支持,这在SO中的许多问题似乎与
有关我还在学习,但我主要集中在使用pandas做这些类型的数据操作,所以这些类型的问题对我来说是完全陌生的。任何帮助将非常感激!
最后,这似乎是软件包安装/Windows文件夹访问的问题。为了解决这个问题,我必须在我的.py文件所在的文件夹中创建一个虚拟环境,然后,一旦venv被激活,调用pyi-makespec --onefile test.py
-之后,确保.spec文件在运行之前具有所有正确的信息(遵循这篇文章的建议,特别是在datas
和hidden_exports
上)。完成后,.exe文件可以在dist文件夹