Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python脚本依赖于另一个.exe。是否可以将两者合并为一个.exe?_Python_Exe_Pyinstaller_Tar - Fatal编程技术网

Python脚本依赖于另一个.exe。是否可以将两者合并为一个.exe?

Python脚本依赖于另一个.exe。是否可以将两者合并为一个.exe?,python,exe,pyinstaller,tar,Python,Exe,Pyinstaller,Tar,我正在写一个简短的script.py,它将更新archive.tar tar存档的内容是一个文件:file.txt(内容:“Hello”) 我正在使用7zip的命令行版本7za.exe,用另一个file.txt(内容:“Hello world”)更新file.txt。我正在使用以下命令: os.system(“7za u archive.tar file.txt”) 到目前为止,一切正常,但是我想使用PyInstaller从Python脚本创建一个可执行文件,因为不是每个使用该脚本的人都会安装P


我正在写一个简短的
script.py
,它将更新
archive.tar

tar存档的内容是一个文件:
file.txt(内容:“Hello”)

我正在使用7zip的命令行版本
7za.exe
,用另一个
file.txt(内容:“Hello world”)
更新
file.txt
。我正在使用以下命令:

os.system(“7za u archive.tar file.txt”)

到目前为止,一切正常,但是我想使用PyInstaller从Python脚本创建一个可执行文件,因为不是每个使用该脚本的人都会安装Python

我的问题:有没有办法将
script.py
7za.exe
合并到一个.exe文件中? 到目前为止,我还没有找到答案。

为什么不直接使用这个库呢

这可以简单到:

with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
如果你真的想使用第三方,那么不,没有简单的方法来做你想做的事情。唯一“干净”的方法是使用安装程序将可执行文件打包在一起,就像您可以创建的那些安装程序一样

注意:您应该更喜欢使用子流程,而不是
os.system
,请参见此处

更新:对于一个tar文件,也许这些可以帮助您:

也许您必须解压缩/添加/重新压缩,但您应该能够在内存中执行此操作。

为什么不简单地使用库呢

这可以简单到:

with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
如果你真的想使用第三方,那么不,没有简单的方法来做你想做的事情。唯一“干净”的方法是使用安装程序将可执行文件打包在一起,就像您可以创建的那些安装程序一样

注意:您应该更喜欢使用子流程,而不是
os.system
,请参见此处

更新:对于一个tar文件,也许这些可以帮助您:


也许您必须解压缩/添加/重新压缩,但您应该能够在内存中执行此操作。

我猜ZipFile不会工作,因为我的存档文件是.tar而不是.zip。我也尝试过使用tarfile,但是没有更新归档文件的选项,只能创建一个新文件。即使Windows 10上的bsdtar命令也不允许我更新文件。。。到目前为止,我唯一能做到这一点的方法就是使用7zip。我宁愿不构建安装程序,而只是将其作为一个可以传递的exe文件保存。当我解决这个问题时,我记下了从os.system到subprocess的变化;)啊,是的,我的错,一开始我没有发现焦油。查看我的更新我猜ZipFile不会工作,因为我的存档文件是.tar而不是.zip。我也尝试过使用tarfile,但是没有更新归档文件的选项,只能创建一个新文件。即使Windows 10上的bsdtar命令也不允许我更新文件。。。到目前为止,我唯一能做到这一点的方法就是使用7zip。我宁愿不构建安装程序,而只是将其作为一个可以传递的exe文件保存。当我解决这个问题时,我记下了从os.system到subprocess的变化;)啊,是的,我的错,一开始我没有发现焦油。查看我的更新