2014-10-26 91 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上測試。我知道這是一個老問題,我希望這可以幫助那些絆倒它的人。