|
30鱼币
本帖最后由 Teggi 于 2020-6-7 21:27 编辑
def writeAllFileToZip(absDir,zipFile):
for f in os.listdir(absDir):
absFile=os.path.join(absDir,f)
if os.path.isdir(absFile):
relFile=absFile[len(os.getcwd())+1:]
zipFile.write(relFile)
writeAllFileToZip(absFile,zipFile)
else:
relFile=absFile[len(os.getcwd())+1:]
zipFile.write(relFile)
return
zipFilePath=os.path.join(sys.path[0],"result_b.zip") #把叫RA的文件夹打包为result_b.zip
zipFile=zipfile.ZipFile(zipFilePath,"w",zipfile.ZIP_STORED)
absDir=os.path.join(sys.path[0],"RA")
cwd = os.getcwd()
os.chdir(os.path.dirname(absDir))
writeAllFileToZip(absDir,zipFile)
os.chdir(cwd)
print("压缩成功")
在自己电脑上运行正常
但是每次打包成EXE,放到其他电脑上运行就会在zipFile=zipfile.ZipFile(zipFilePath,"w",zipfile.ZIP_STORED) 这一句报错:
File "zipfile.py", line 1251, in__init__
FileNotFoundError: [Error2] No such file or directory: 'C:\\Users\\Chengyin\\AppData\\Local\\Temp\\_MEI191922\\base_library.zip\\result_b.zip'
请问有什么解决办法能让他在其他电脑上也能顺利运行
这个要涉及到打包后的sys.path[0]的值多少了,写了一段代码测试:
- import os,sys
- print(sys.path[0])
- print(os.getcwd())
- input('查看目录')
复制代码
直接运行后结果很正常,都是当前工作目录:
然后打包后运行,结果:
很明显,sys.path[0]指向了系统临时目录下的_MEI191802\base_library.zip
然后资源管理器看看,呃,是一个文件,不是目录,所以代码整合的路径在打包后运行时是错误的:
所以,建议用os.getcwd()来取代sys.path[0],再打包运行就不会报错了。
|
-
最佳答案
查看完整内容
这个要涉及到打包后的sys.path[0]的值多少了,写了一段代码测试:
直接运行后结果很正常,都是当前工作目录:
然后打包后运行,结果:
很明显,sys.path[0]指向了系统临时目录下的_MEI191802\base_library.zip
然后资源管理器看看,呃,是一个文件,不是目录,所以代码整合的路径在打包后运行时是错误的:
所以,建议用os.getcwd()来取代sys.path[0],再打包运行就不会报错了。
|