2014-10-26 94 views
2

为了创建我一直在使用pyinstaller一个Python .exe文件和该命令:的Python/Pyinstaller - onefile可执行

pyinstaller --onefile -w -i favicon.ico "program.py" 

这将创建包含生成.exe文件A/DIST文件夹。 问题是我无法运行此.exe文件,而不在.exe启动文件夹中包含以下程序文件。

+ Dir 
    - favicon.ico 
    - logo.gif 
    - data.csv 

    - program.exe 

如何将.ico,.gif和.csv放入.exe中,使其真正成为“onefile”?

+0

这些文件的路径不够吗? – 2014-10-27 07:11:44

+0

是的,但如果我想分发.exe,则不必下载.ico,.gif和.csv。这些应该包含在.exe中一些如何!? – Sepi 2014-10-27 08:12:45

回答

0

通过编写shell脚本,可以通过PowerShell的执行,

  1. 该文件可以进行并写成一个.exe文件

  2. 其他文件可以moved到新目录。

现在所有需要做的就是让Powershell脚本运行。

+0

因此,没有办法将.py .ico,.gif和.csv打包到单个.exe中,只使用Pyinstaller? – Sepi 2014-10-27 10:07:57

+0

@sepi不是我所听说过的。 – 2014-10-27 13:35:43

1

我对python很陌生,所以如果代码有点混乱,我提前道歉。我遇到了与.csv文件类似的问题。我设法一次运行该代码将它们打包成.py文件:

import csv 

myfinalvariable=[] 

with open(PathToOriginalCsv + '\\' + 'NameOfCsv.csv', newline='') as csvfile: 
    myfirstvariable = csv.reader(csvfile, delimiter=',', quotechar='|') 
    for line in myfirstvariable: 
     myfinalvariable.append(' '.join(line).split()) 

pyfile=open('PathToDesiredFile\mynewfile.py', 'w') 
pyfile.write('newcsv=%s' %(myfinalvariable)) 
pyfile.close 

可以遍历这个,如果你有多个CSV文件。现在你有了'变量'的py文件,你可以'忘记'csv文件。因为如果你把创建PY文件到您的“项目文件夹”,并把:

from mynewfile import newcsv, newcsv2, ... 

到你的代码,你可以修改你的代码使用变量“newcsv”,“newcsv2”等来代替装载原始的csv文件。当您使用--onefile参数的pyinstaller时,它会将'mynewfile.py'文件打包到创建的exe文件中。当使用参数--icon=favicon.ico时,Pyinstaller 3.0还会打包.ico文件。在Windows,Python3.4,Pyinstaller3.0上测试。我知道这是一个老问题,我希望这可以帮助那些绊倒它的人。