转载于:http://www.crifan.com/use_pyinstaller_to_package_python_to_single_executable_exe/
之前就想要把自己的BlogsToWordpress打开成exe了。一直没去弄。
又看到有人提到python打开成exe的问题。
所以打算现在就去试试。
注:此处之所有选用BlogsToWordpress,是因为此python脚本够复杂,依赖的模块够多。
如果这个都搞定了,那么其他单个的python文件,和小python项目的打包,就更不成问题了。
1.先去找找,目前主流有哪几种方法。
找到几个名字
cx_Freeze
PyInstaller
py2exe
2.关于py2exe和PyInstaller的两者官网:
http://www.py2exe.org/index.cgi/FAQ
和
比较了一下,发现貌似后者更好用。
因为貌似py2exe还需要另外的其他库文件啊啥的,太琐碎。
而PyInstaller:
- 可以只是生成单独的可执行程序
- 且支持的版本也多:2.3到2.7都支持。以及x64也支持
- 也可以自定义图标
所以先去试试PyInstaller。
3.从主页
中下载对应的zip包:
https://github.com/downloads/pyinstaller/pyinstaller/pyinstaller-2.0.zip
得到3M+的pyinstaller-2.0.zip,解压,打开cmd,进入对应目录,去安装,结果说不支持:
|
1
2
3
|
D:\tmp\dev_tools\python\to_exe\PyInstaller\pyinstaller-2.0>setup.py
install
setup.py
is not yet supposed to work. Please Use PyInstaller without installation.
|
所以算了,还是参考官网文档,一点点折腾吧。
4.参考在线文档:
http://www.pyinstaller.org/export/v2.0/project/doc/Manual.html?format=raw
结果说需要PyWin32,所以得先去装这个。
5.后来才发现,原来之前已经安装过了:
【已解决】Python中出错:ImportError: No module named win32com.client
但是要注意的是,import不是pywin32,而是win32com:
|
1
2
3
4
5
6
7
8
|
Python
2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500
64 bit (AMD64)] on win32
Type
"help",
"copyright",
"credits"
or "license"
for
more
information.
>>>
import
pywin32
Traceback
(most recent call last):
File
"<stdin>",
line 1, in
<module>
ImportError:
No module named pywin32
>>>
import
win32com
>>>
|
6.继续参考:
发现,解压后,就算是安装好了。
7.在一个文件夹中,准备好自己的Python程序:
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress
以备后用。
8.去到pyinstaller.py所在目录,去运行:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0>pyinstaller.py
..\BlogsToWordpress\BlogsToWordpress.py
232
INFO: wrote D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\BlogsToWordpress.spec
250
INFO: Testing for
ability to set
icons, version resources...
269
INFO: ... resource update available
272
INFO: UPX is not available.
1437
INFO: checking Analysis
1437
INFO: building Analysis because out00-Analysis.toc non existent
1437
INFO: running Analysis out00-Analysis.toc
1439
INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable
3074
INFO: Searching for
assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ...
3075
INFO: Found manifest C:\Windows\WinSxS\Manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b.manifest
3081
INFO: Searching for
file
msvcr90.dll
3081
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcr90.dll
3081
INFO: Searching for
file
msvcp90.dll
3082
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcp90.dll
3082
INFO: Searching for
file
msvcm90.dll
3082
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcm90.dll
3292
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support\_pyi_bootstrap.py
4048
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\archive.py
4101
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\carchive.py
4159
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.py
4176
INFO: Analyzing ..\BlogsToWordpress\BlogsToWordpress.py
4880
INFO: Hidden import
'encodings'
has been found otherwise
4881
INFO: Looking for
run-time
hooks
4881
INFO: Analyzing rthook D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support/rthooks/pyi_rth_encodings.py
5523
INFO: Warnings written to D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress\warnBlogsToWordpress.txt
5528
INFO: checking PYZ
5529
INFO: rebuilding out00-PYZ.toc because out00-PYZ.pyz is missing
5529
INFO: building PYZ out00-PYZ.toc
6225
INFO: checking PKG
6226
INFO: rebuilding out00-PKG.toc because out00-PKG.pkg is missing
6226
INFO: building PKG out00-PKG.pkg
6246
INFO: checking EXE
6246
INFO: rebuilding out00-EXE.toc because BlogsToWordpress.exe missing
6248
INFO: building EXE from out00-EXE.toc
6256
INFO: Appending archive to EXE D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress\BlogsToWordpress.exe
6259
INFO: checking COLLECT
6259
INFO: building COLLECT out00-COLLECT.toc
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0>
|
可以看到:
当前pyinstaller下面,的确生成了对应的BlogsToWordpress文件夹:
其下,也有对应的:
都已经生成了对应的exe了:
dist下面,有对应的,exe,pyd,dll等等:
汗,效率也忒高了,我还以为,需要折腾半天才可以呢,囧。。。。
9.先去试试生成的exe,是否满足我们的需求,是否可以独立运行。
不过运行之前,还是去先研究一下对应的参数吧。
看到了:
很明显,默认用的是-D,所以生成的是带目录的,现在重新去执行一次,使用-F生成单一的文件。
10.删掉旧的。重新运行:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0>pyinstaller.py
-F ..\BlogsToWordpress\BlogsToWordpress.py
39
INFO: wrote D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\BlogsToWordpress.spec
55
INFO: Testing for
ability to set
icons, version resources...
62
INFO: ... resource update available
63
INFO: UPX is not available.
848
INFO: checking Analysis
848
INFO: building Analysis because out00-Analysis.toc non existent
849
INFO: running Analysis out00-Analysis.toc
851
INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable
905
INFO: Searching for
assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ...
907
INFO: Found manifest C:\Windows\WinSxS\Manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b.manifest
908
INFO: Searching for
file
msvcr90.dll
908
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcr90.dll
911
INFO: Searching for
file
msvcp90.dll
911
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcp90.dll
912
INFO: Searching for
file
msvcm90.dll
914
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcm90.dll
987
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support\_pyi_bootstrap.py
1639
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\archive.py
1694
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\carchive.py
1750
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.py
1766
INFO: Analyzing ..\BlogsToWordpress\BlogsToWordpress.py
2246
INFO: Hidden import
'encodings'
has been found otherwise
2247
INFO: Looking for
run-time
hooks
2249
INFO: Analyzing rthook D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support/rthooks/pyi_rth_encodings.py
2608
INFO: Warnings written to D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress\warnBlogsToWordpress.txt
2611
INFO: checking PYZ
2612
INFO: rebuilding out00-PYZ.toc because out00-PYZ.pyz is missing
2613
INFO: building PYZ out00-PYZ.toc
3290
INFO: checking PKG
3290
INFO: rebuilding out00-PKG.toc because out00-PKG.pkg is missing
3292
INFO: building PKG out00-PKG.pkg
4784
INFO: checking EXE
4784
INFO: rebuilding out00-EXE.toc because BlogsToWordpress.exe missing
4786
INFO: building EXE from out00-EXE.toc
4793
INFO: Appending archive to EXE D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\dist\BlogsToWordpress.exe
|
去看看结果。
pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress
下面包含很多toc,pkg,pyz等文件:
dist下面,就生成了,所需要的单个exe文件:
但是,注意到了,生成文件中,包含一个警告的文件:
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress\warnBlogsToWordpress.txt
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
W:
no module named org (delayed import by xml.sax)
W:
no module named _scproxy (conditional import by urllib)
W:
no module named cl (delayed, conditional import by aifc)
W:
no module named pwd (delayed, conditional import by posixpath)
W:
no module named org (top-level import by pickle)
W:
no module named Carbon (delayed import by plistlib)
W:
no module named posix (delayed, conditional import by __main__)
W:
no module named fcntl (conditional import by subprocess)
W:
no module named BlogBaidu (top-level import by __main__)
W:
no module named BlogCsdn (top-level import by __main__)
W:
no module named BlogBlogbus (top-level import by __main__)
W:
no module named java (conditional import by xml.sax._exceptions)
W:
no module named BlogTianya (top-level import by __main__)
W:
no module named readline (delayed import by pdb)
W:
no module named AES (delayed, conditional import by archive)
W:
no module named _emx_link (conditional import by os)
W:
no module named pwd (delayed import by getpass)
W:
no module named posix (delayed, conditional import by iu)
W:
no module named EasyDialogs (conditional import by getpass)
W:
no module named termios (top-level import by getpass)
W:
no module named gestalt (delayed import by platform)
W:
no module named org (top-level import by copy)
W:
no module named fcntl (top-level import by tempfile)
W:
no module named readline (delayed, conditional import by cmd)
W:
no module named crifanLib (top-level import by __main__)
W:
no module named SOCKS (top-level import by ftplib)
W:
no module named java (delayed import by platform)
W:
no module named cl (delayed import by aifc)
W:
no module named BlogQQ (top-level import by __main__)
W:
no module named xmlparse (top-level import by pyexpat)
W:
no module named xmltok (top-level import by pyexpat)
W:
no module named BlogDiandian (top-level import by __main__)
W:
no module named BlogSohu (top-level import by __main__)
W:
no module named BlogRenren (top-level import by __main__)
W:
no module named AES (delayed, conditional import by __main__)
W:
no module named posix (conditional import by os)
W:
no module named BlogNetease (top-level import by __main__)
W:
no module named MacOS (delayed import by platform)
W:
no module named vms_lib (delayed, conditional import by platform)
W:
no module named rourl2path (conditional import by urllib)
W:
no module named _xmlplus (top-level import by xml)
W:
no module named Crypt (delayed, conditional import by __main__)
W:
no module named BlogSina (top-level import by __main__)
W:
delayed exec statement detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed eval hack detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed eval hack detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed __import__ hack detected at line 0 - optparse (D:\tmp\dev_install_root\Python27_x64\lib\optparse.pyc)
W:
delayed conditional __import__ hack detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
delayed exec statement detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
delayed conditional __import__ hack detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
__all__ is built strangely at line 0 - tokenize (D:\tmp\dev_install_root\Python27_x64\lib\tokenize.pyc)
W:
__all__ is built strangely at line 0 - tokenize (D:\tmp\dev_install_root\Python27_x64\lib\tokenize.pyc)
W:
delayed __import__ hack detected at line 0 - pickle (D:\tmp\dev_install_root\Python27_x64\lib\pickle.pyc)
W:
delayed __import__ hack detected at line 0 - pickle (D:\tmp\dev_install_root\Python27_x64\lib\pickle.pyc)
W:
delayed __import__ hack detected at line 0 - encodings (D:\tmp\dev_install_root\Python27_x64\lib\encodings\__init__.pyc)
W:
__all__ is built strangely at line 0 - dis (D:\tmp\dev_install_root\Python27_x64\lib\dis.pyc)
W:
__all__ is built strangely at line 0 - hashlib (D:\tmp\dev_install_root\Python27_x64\lib\hashlib.pyc)
W:
delayed conditional eval hack detected at line 0 - warnings (D:\tmp\dev_install_root\Python27_x64\lib\warnings.pyc)
W:
delayed conditional __import__ hack detected at line 0 - warnings (D:\tmp\dev_install_root\Python27_x64\lib\warnings.pyc)
W:
delayed __import__ hack detected at line 0 - email (D:\tmp\dev_install_root\Python27_x64\lib\email\__init__.pyc)
W:
delayed exec statement detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional eval hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed eval hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional eval hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed eval hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional exec statement detected at line 0 - iu (D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.pyc)
W:
delayed conditional exec statement detected at line 0 - iu (D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.pyc)
W:
__all__ is built strangely at line 0 - collections (D:\tmp\dev_install_root\Python27_x64\lib\collections.pyc)
W:
delayed exec statement detected at line 0 - collections (D:\tmp\dev_install_root\Python27_x64\lib\collections.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.main (D:\tmp\dev_install_root\Python27_x64\lib\unittest\main.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
delayed __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
__all__ is built strangely at line 0 - __future__ (D:\tmp\dev_install_root\Python27_x64\lib\__future__.pyc)
W:
delayed __import__ hack detected at line 0 - xml.sax (D:\tmp\dev_install_root\Python27_x64\lib\xml\sax\__init__.pyc)
W:
delayed eval hack detected at line 0 - gettext (D:\tmp\dev_install_root\Python27_x64\lib\gettext.pyc)
|
不知道是否影响程序。
11.去运行单个的exe,看看效果。
结果直接出错:
|
1
2
3
4
5
6
|
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\dist>BlogsToWordpress.exe
Traceback
(most recent call last):
File
"<string>",
line 127, in
<module>
File
"D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.py",
line 409, in
importHook
raise
ImportError("No
module named %s"
% fqname)
ImportError:
No module named crifanLib
|
很明显,还是无法自动导入很多的库啊。
去想办法,添加搜索路径,让其找到对应的库。
12.好像是-p参数:
去试试:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0>pyinstaller.py
-F -p D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs;D:\tmp\tmp_dev_root\python\tutorial
_summary\make_exe\BlogsToWordpress\libs\crifan;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\crifan\blogModules;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsT
oWordpress\libs\thirdparty;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\thirdparty\chardet;
..\BlogsToWordpress\BlogsToWordpress.py
18
INFO: wrote D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\BlogsToWordpress.spec
33
INFO: Testing for
ability to set
icons, version resources...
36
INFO: ... resource update available
39
INFO: UPX is not available.
674
INFO: checking Analysis
677
INFO: building because pathex changed
679
INFO: running Analysis out00-Analysis.toc
680
INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable
733
INFO: Searching for
assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ...
735
INFO: Found manifest C:\Windows\WinSxS\Manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b.manifest
736
INFO: Searching for
file
msvcr90.dll
736
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcr90.dll
738
INFO: Searching for
file
msvcp90.dll
739
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcp90.dll
740
INFO: Searching for
file
msvcm90.dll
743
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcm90.dll
812
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support\_pyi_bootstrap.py
1512
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\archive.py
1578
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\carchive.py
1648
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.py
1667
INFO: Analyzing ..\BlogsToWordpress\BlogsToWordpress.py
3016
INFO: Hidden import
'encodings'
has been found otherwise
3016
INFO: Looking for
run-time
hooks
3018
INFO: Analyzing rthook D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support/rthooks/pyi_rth_encodings.py
3670
INFO: Warnings written to D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress\warnBlogsToWordpress.txt
3674
INFO: checking PYZ
3679
INFO: building because toc changed
3679
INFO: building PYZ out00-PYZ.toc
5713
INFO: checking PKG
5716
INFO: building because D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress\out00-PYZ.pyz changed
5717
INFO: building PKG out00-PKG.pkg
7163
INFO: checking EXE
7164
INFO: rebuilding out00-EXE.toc because pkg is more
recent
7164
INFO: building EXE from out00-EXE.toc
7167
INFO: Appending archive to EXE D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\dist\BlogsToWordpress.exe
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0>
|
添加上路径后,生成的exe,的确也大了一点,变成4505KB了:
另外,warnBlogsToWordpress.txt中,的确没了crifanLib,但是还是有一些其他,可能要依赖的库:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
W:
no module named org (delayed import
by xml.sax)
W:
no module named PIL (delayed import
by BlogRenren)
W:
no module named _dummy_threading (top-level
import
by dummy_threading)
W:
no module named cl (delayed, conditional import
by aifc)
W:
no module named pwd
(delayed, conditional import
by posixpath)
W:
no module named org (top-level
import
by pickle)
W:
no module named Carbon (delayed import
by plistlib)
W:
no module named PIL (delayed, conditional import
by BlogNetease)
W:
no module named posix (delayed, conditional import
by __main__)
W:
no module named iconv_codec (top-level
import
by BeautifulSoup)
W:
no module named fcntl (conditional import
by subprocess)
W:
no module named MacOS (delayed import
by platform)
W:
no module named readline (delayed import
by pdb)
W:
no module named AES (delayed, conditional import
by archive)
W:
no module named _scproxy (conditional import
by urllib)
W:
no module named pwd
(delayed import
by getpass)
W:
no module named posix (delayed, conditional import
by iu)
W:
no module named EasyDialogs (conditional import
by getpass)
W:
no module named termios (top-level
import
by getpass)
W:
no module named gestalt (delayed import
by platform)
W:
no module named org (top-level
import
by copy)
W:
no module named fcntl (top-level
import
by tempfile)
W:
no module named cjkcodecs (top-level
import
by BeautifulSoup)
W:
no module named readline (delayed, conditional import
by cmd)
W:
no module named java (delayed import
by platform)
W:
no module named cl (delayed import
by aifc)
W:
no module named xmlparse (top-level
import
by pyexpat)
W:
no module named xmltok (top-level
import
by pyexpat)
W:
no module named java (conditional import
by xml.sax._exceptions)
W:
no module named _emx_link (conditional import
by os)
W:
no module named posix (conditional import
by os)
W:
no module named rourl2path (conditional import
by urllib)
W:
no module named vms_lib (delayed, conditional import
by platform)
W:
no module named SOCKS (top-level
import
by ftplib)
W:
no module named _xmlplus (top-level
import
by xml)
W:
no module named Crypt (delayed, conditional import
by __main__)
W:
no module named AES (delayed, conditional import
by __main__)
W:
delayed exec
statement detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed eval
hack detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed eval
hack detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed __import__ hack detected at line 0 - optparse (D:\tmp\dev_install_root\Python27_x64\lib\optparse.pyc)
W:
delayed conditional __import__ hack detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
delayed exec
statement detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
delayed conditional __import__ hack detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
__all__ is built strangely at line 0 - tokenize (D:\tmp\dev_install_root\Python27_x64\lib\tokenize.pyc)
W:
__all__ is built strangely at line 0 - tokenize (D:\tmp\dev_install_root\Python27_x64\lib\tokenize.pyc)
W:
delayed __import__ hack detected at line 0 - pickle (D:\tmp\dev_install_root\Python27_x64\lib\pickle.pyc)
W:
delayed __import__ hack detected at line 0 - pickle (D:\tmp\dev_install_root\Python27_x64\lib\pickle.pyc)
W:
delayed __import__ hack detected at line 0 - encodings (D:\tmp\dev_install_root\Python27_x64\lib\encodings\__init__.pyc)
W:
__all__ is built strangely at line 0 - dummy_threading (D:\tmp\dev_install_root\Python27_x64\lib\dummy_threading.pyc)
W:
__all__ is built strangely at line 0 - dis (D:\tmp\dev_install_root\Python27_x64\lib\dis.pyc)
W:
__all__ is built strangely at line 0 - hashlib (D:\tmp\dev_install_root\Python27_x64\lib\hashlib.pyc)
W:
delayed conditional eval
hack detected at line 0 - warnings (D:\tmp\dev_install_root\Python27_x64\lib\warnings.pyc)
W:
delayed conditional __import__ hack detected at line 0 - warnings (D:\tmp\dev_install_root\Python27_x64\lib\warnings.pyc)
W:
delayed __import__ hack detected at line 0 - email (D:\tmp\dev_install_root\Python27_x64\lib\email\__init__.pyc)
W:
delayed exec
statement detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional eval
hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed eval
hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional eval
hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed eval
hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional exec
statement detected at line 0 - iu (D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.pyc)
W:
delayed conditional exec
statement detected at line 0 - iu (D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.pyc)
W:
__all__ is built strangely at line 0 - collections (D:\tmp\dev_install_root\Python27_x64\lib\collections.pyc)
W:
delayed exec
statement detected at line 0 - collections (D:\tmp\dev_install_root\Python27_x64\lib\collections.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.main (D:\tmp\dev_install_root\Python27_x64\lib\unittest\main.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
delayed __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
__all__ is built strangely at line 0 - __future__ (D:\tmp\dev_install_root\Python27_x64\lib\__future__.pyc)
W:
delayed __import__ hack detected at line 0 - xml.sax (D:\tmp\dev_install_root\Python27_x64\lib\xml\sax\__init__.pyc)
W:
delayed eval
hack detected at line 0 - gettext (D:\tmp\dev_install_root\Python27_x64\lib\gettext.pyc)
|
比如,其中的PIL等库。
不过,关于PIL,我去看了看自己的
D:\tmp\dev_install_root\Python27_x64\Lib\site-packages
中的确没有,应该是重装python,导致了之前安装好的PIL没了。
所以,还是需要自己重新安装一下PIL的。
12.关于安装PIL的过程,详见:
【记录】下载和安装Python的第三方图像处理的库:PIL(Python Imaging Library)
13.然后再去
D:\tmp\dev_install_root\Python27_x64\Lib\site-packages
确认一下,果然有了PIL了。
然后此处,删掉旧的,重新执行一次:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0>pyinstaller.py
-F -p D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs;D:\tmp\tmp_dev_root\python\tutorial
_summary\make_exe\BlogsToWordpress\libs\crifan;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\crifan\blogModules;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsT
oWordpress\libs\thirdparty;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\thirdparty\chardet;
..\BlogsToWordpress\BlogsToWordpress.py
18
INFO: wrote D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\BlogsToWordpress.spec
33
INFO: Testing for
ability to set
icons, version resources...
37
INFO: ... resource update available
39
INFO: UPX is not available.
684
INFO: checking Analysis
684
INFO: building Analysis because out00-Analysis.toc non existent
684
INFO: running Analysis out00-Analysis.toc
685
INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable
740
INFO: Searching for
assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ...
741
INFO: Found manifest C:\Windows\WinSxS\Manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b.manifest
742
INFO: Searching for
file
msvcr90.dll
743
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcr90.dll
744
INFO: Searching for
file
msvcp90.dll
745
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcp90.dll
747
INFO: Searching for
file
msvcm90.dll
750
INFO: Found file
C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b\msvcm90.dll
821
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support\_pyi_bootstrap.py
1531
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\archive.py
1600
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\carchive.py
1672
INFO: Analyzing D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.py
1692
INFO: Analyzing ..\BlogsToWordpress\BlogsToWordpress.py
2903
INFO: Hidden import
'encodings'
has been found otherwise
2904
INFO: Looking for
run-time
hooks
2905
INFO: Analyzing rthook D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support/rthooks/pyi_rth_PIL_Image.py
2917
INFO: Analyzing rthook D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\support/rthooks/pyi_rth_encodings.py
3319
INFO: Warnings written to D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress\warnBlogsToWordpress.txt
3325
INFO: checking PYZ
3326
INFO: rebuilding out00-PYZ.toc because out00-PYZ.pyz is missing
3326
INFO: building PYZ out00-PYZ.toc
5360
INFO: checking PKG
5360
INFO: rebuilding out00-PKG.toc because out00-PKG.pkg is missing
5361
INFO: building PKG out00-PKG.pkg
6839
INFO: checking EXE
6839
INFO: rebuilding out00-EXE.toc because BlogsToWordpress.exe missing
6840
INFO: building EXE from out00-EXE.toc
6842
INFO: Appending archive to EXE D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\dist\BlogsToWordpress.exe
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0>
|
虽然结果警告中,也还是有PIL:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
W:
no module named org (delayed import
by xml.sax)
W:
no module named _dummy_threading (top-level
import
by dummy_threading)
W:
no module named cl (delayed, conditional import
by aifc)
W:
no module named pwd
(delayed, conditional import
by posixpath)
W:
no module named org (top-level
import
by pickle)
W:
no module named Carbon (delayed import
by plistlib)
W:
no module named posix (delayed, conditional import
by __main__)
W:
no module named iconv_codec (top-level
import
by BeautifulSoup)
W:
no module named fcntl (conditional import
by subprocess)
W:
no module named MacOS (delayed import
by platform)
W:
no module named readline (delayed import
by pdb)
W:
no module named AES (delayed, conditional import
by archive)
W:
no module named _scproxy (conditional import
by urllib)
W:
no module named pwd
(delayed import
by getpass)
W:
no module named posix (delayed, conditional import
by iu)
W:
no module named EasyDialogs (conditional import
by getpass)
W:
no module named termios (top-level
import
by getpass)
W:
no module named gestalt (delayed import
by platform)
W:
no module named org (top-level
import
by copy)
W:
no module named _imaging_gif (top-level
import
by PIL.GifImagePlugin)
W:
no module named fcntl (top-level
import
by tempfile)
W:
no module named cjkcodecs (top-level
import
by BeautifulSoup)
W:
no module named readline (delayed, conditional import
by cmd)
W:
no module named java (delayed import
by platform)
W:
no module named cl (delayed import
by aifc)
W:
no module named xmlparse (top-level
import
by pyexpat)
W:
no module named xmltok (top-level
import
by pyexpat)
W:
no module named java (conditional import
by xml.sax._exceptions)
W:
no module named _emx_link (conditional import
by os)
W:
no module named posix (conditional import
by os)
W:
no module named ICCProfile (delayed, conditional import
by PIL.PngImagePlugin)
W:
no module named rourl2path (conditional import
by urllib)
W:
no module named vms_lib (delayed, conditional import
by platform)
W:
no module named SOCKS (top-level
import
by ftplib)
W:
no module named _xmlplus (top-level
import
by xml)
W:
no module named Crypt (delayed, conditional import
by __main__)
W:
no module named AES (delayed, conditional import
by __main__)
W:
delayed exec
statement detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed eval
hack detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed eval
hack detected at line 0 - bdb (D:\tmp\dev_install_root\Python27_x64\lib\bdb.pyc)
W:
delayed __import__ hack detected at line 0 - optparse (D:\tmp\dev_install_root\Python27_x64\lib\optparse.pyc)
W:
delayed __import__ hack detected at line 0 - PIL.Image (D:\tmp\dev_install_root\Python27_x64\lib\site-packages\PIL\Image.pyc)
W:
delayed conditional __import__ hack detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
delayed exec
statement detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
delayed conditional __import__ hack detected at line 0 - doctest (D:\tmp\dev_install_root\Python27_x64\lib\doctest.pyc)
W:
__all__ is built strangely at line 0 - tokenize (D:\tmp\dev_install_root\Python27_x64\lib\tokenize.pyc)
W:
__all__ is built strangely at line 0 - tokenize (D:\tmp\dev_install_root\Python27_x64\lib\tokenize.pyc)
W:
delayed __import__ hack detected at line 0 - pickle (D:\tmp\dev_install_root\Python27_x64\lib\pickle.pyc)
W:
delayed __import__ hack detected at line 0 - pickle (D:\tmp\dev_install_root\Python27_x64\lib\pickle.pyc)
W:
delayed __import__ hack detected at line 0 - encodings (D:\tmp\dev_install_root\Python27_x64\lib\encodings\__init__.pyc)
W:
__all__ is built strangely at line 0 - dummy_threading (D:\tmp\dev_install_root\Python27_x64\lib\dummy_threading.pyc)
W:
__all__ is built strangely at line 0 - dis (D:\tmp\dev_install_root\Python27_x64\lib\dis.pyc)
W:
__all__ is built strangely at line 0 - hashlib (D:\tmp\dev_install_root\Python27_x64\lib\hashlib.pyc)
W:
delayed conditional eval
hack detected at line 0 - warnings (D:\tmp\dev_install_root\Python27_x64\lib\warnings.pyc)
W:
delayed conditional __import__ hack detected at line 0 - warnings (D:\tmp\dev_install_root\Python27_x64\lib\warnings.pyc)
W:
delayed __import__ hack detected at line 0 - email (D:\tmp\dev_install_root\Python27_x64\lib\email\__init__.pyc)
W:
delayed exec
statement detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional eval
hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed eval
hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional eval
hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed eval
hack detected at line 0 - pdb (D:\tmp\dev_install_root\Python27_x64\lib\pdb.pyc)
W:
delayed conditional exec
statement detected at line 0 - iu (D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.pyc)
W:
delayed conditional exec
statement detected at line 0 - iu (D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\PyInstaller\loader\iu.pyc)
W:
__all__ is built strangely at line 0 - collections (D:\tmp\dev_install_root\Python27_x64\lib\collections.pyc)
W:
delayed exec
statement detected at line 0 - collections (D:\tmp\dev_install_root\Python27_x64\lib\collections.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.main (D:\tmp\dev_install_root\Python27_x64\lib\unittest\main.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
delayed conditional __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
delayed __import__ hack detected at line 0 - unittest.loader (D:\tmp\dev_install_root\Python27_x64\lib\unittest\loader.pyc)
W:
__all__ is built strangely at line 0 - __future__ (D:\tmp\dev_install_root\Python27_x64\lib\__future__.pyc)
W:
delayed __import__ hack detected at line 0 - xml.sax (D:\tmp\dev_install_root\Python27_x64\lib\xml\sax\__init__.pyc)
W:
delayed eval
hack detected at line 0 - gettext (D:\tmp\dev_install_root\Python27_x64\lib\gettext.pyc)
|
但是很明显,只是PIL模块内部的一些小问题罢了,不理会。
生成的exe,的确又变大了,4748KB:
13.去运行现在的最新的BlogsToWordpress.exe,看看效果如何。
果然是可以,如期望的一样,去执行了:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\dist>BlogsToWordpress.exe
Imported:
crifanLib, v2.4
Imported:
BlogNetease, v1.4
Imported:
BlogBaidu, v3.4
Imported:
BlogSina, v1.5
Imported:
BlogQQ, v1.8
Imported:
BlogCsdn, v1.1
Imported:
BlogSohu, v1.3
LINE
1600 : INFO Current runtime info:
LINE
1600 : INFO Paramenters : ['D:\\tmp\\tmp_dev_root\\python\\tutorial_summary\\make_exe\\pyinstaller-2.0\\BlogsToWordpress\\dist\\BlogsToWordpress.exe']
LINE
1600 : INFO Python version : sys.version_info(major=2, minor=7, micro=3, releaselevel='final',
serial=0)
LINE
1600 : INFO platform.machine()=AMD64
LINE
1600 : INFO platform.node()=PC-CLI-1
LINE
1600 : INFO platform.platform()=Windows-7-6.1.7601-SP1
LINE
1600 : INFO platform.processor()=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
LINE
1600 : INFO platform.python_build()=('default',
'Apr
10 2012 23:24:47')
LINE
1600 : INFO platform.python_compiler()=MSC v.1500
64 bit (AMD64)
LINE
1600 : INFO platform.python_branch()=
LINE
1600 : INFO platform.python_implementation()=CPython
LINE
1600 : INFO platform.python_revision()=
LINE
1600 : INFO platform.python_version()=2.7.3
LINE
1600 : INFO platform.python_version_tuple()=('2',
'7',
'3')
LINE
1600 : INFO platform.release()=7
LINE
1600 : INFO platform.system()=Windows
LINE
1600 : INFO platform.version()=6.1.7601
LINE
1600 : INFO platform.uname()=('Windows',
'PC-CLI-1',
'7',
'6.1.7601',
'AMD64',
'Intel64
Family 6 Model 42 Stepping 7, GenuineIntel')
LINE
1600 : INFO Default encoding : ascii
LINE
1600 : INFO Current path : C:\Users\CLi\AppData\Local\Temp\_MEI252922
LINE
1600 : INFO 版本信息:v16.8
LINE
1600 : INFO 1.如果脚本运行出错,请务必把上述(1)从脚本开始运行到上述所打印出来的系统信息(2)出错时候的相关信息(3)脚本所生成的BlogsToWordpress.log文件,通过复制粘贴、截图、附件等方式
LINE
1600 : INFO 发送至admin(at)crifan.com或跟帖(下面有地址)回复,否则如果没有足够的错误相关信息,我就是想帮你解决问题,也没法帮啊!
LINE
1600 : INFO 2.如对此脚本使用有任何疑问,请输入-h参数以获得相应的参数说明。
LINE
1600 : INFO 3.关于本程序详细的使用说明和更多相关信息,请参考:
LINE
1600 : INFO BlogsToWordPress:将百度空间(新版和旧版),网易163,新浪Sina,QQ空间,人人网,CSDN,搜狐Sohu,博客大巴Blogbus,天涯博客,点点轻博客等博客搬家到WordPress
LINE
1600 : INFO http://www.crifan.com/crifan_released_all/website/python/blogstowordpress/
LINE
1600 : INFO --------------------------------------------------------------------------------
LINE
1600 : INFO Your process type
of post is: Export post to WXR(WordPress eXtended Rss).
LINE
1575 : ERROR Must designate the entry URL for
the first blog item !
LINE
1575 : ERROR Unknown Error !
Traceback
(most recent call last):
File
"<string>",
line 1931, in
<module>
File
"<string>",
line 1655, in
main
SystemExit:
2
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\dist>
|
加上对应参数,再试试:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\dist>BlogsToWordpress.exe
-s http://againinput4.blog.163.com
Imported:
crifanLib, v2.4
Imported:
BlogNetease, v1.4
Imported:
BlogBaidu, v3.4
Imported:
BlogSina, v1.5
Imported:
BlogQQ, v1.8
Imported:
BlogCsdn, v1.1
Imported:
BlogSohu, v1.3
LINE
1600 : INFO Current runtime info:
LINE
1600 : INFO Paramenters : ['D:\\tmp\\tmp_dev_root\\python\\tutorial_summary\\make_exe\\pyinstaller-2.0\\BlogsToWordpress\\dist\\BlogsToWordpress.exe',
'-s',
'http://againinput4.blog.163
.com']
LINE
1600 : INFO Python version : sys.version_info(major=2, minor=7, micro=3, releaselevel='final',
serial=0)
LINE
1600 : INFO platform.machine()=AMD64
LINE
1600 : INFO platform.node()=PC-CLI-1
LINE
1600 : INFO platform.platform()=Windows-7-6.1.7601-SP1
LINE
1600 : INFO platform.processor()=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
LINE
1600 : INFO platform.python_build()=('default',
'Apr
10 2012 23:24:47')
LINE
1600 : INFO platform.python_compiler()=MSC v.1500
64 bit (AMD64)
...
|
的确就是可以正常执行了。
剩下的,就是要拿到别的windows平台上,多测试测试,是否都正常。
14.接着打算再去试试,添加icon图标的事情。
参考官网的参数解释:
去运行:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0>pyinstaller.py
-F -p D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs;D:\tmp\tmp_dev_root\python\tutorial
_summary\make_exe\BlogsToWordpress\libs\crifan;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\crifan\blogModules;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsT
oWordpress\libs\thirdparty;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\thirdparty\chardet;
-i ..\BlogsToWordpress\BlogsToWordpress.ico ..\BlogsToWordpress\BlogsToWordpre
ss.py
18
INFO: wrote D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\BlogsToWordpress.spec
34
INFO: Testing for
ability to set
icons, version resources...
37
INFO: ... resource update available
40
INFO: UPX is not available.
681
INFO: checking Analysis
696
INFO: checking PYZ
709
INFO: checking PKG
711
INFO: building because D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\build\pyi.win32\BlogsToWordpress\BlogsToWordpress.exe.manifest changed
712
INFO: building PKG out00-PKG.pkg
2190
INFO: checking EXE
2192
INFO: building because icon changed
2192
INFO: building EXE from out00-EXE.toc
2207
INFO: SRCPATH [('..\\BlogsToWordpress\\BlogsToWordpress.ico',
None)]
2207
INFO: Updating icons from ['..\\BlogsToWordpress\\BlogsToWordpress.ico']
to c:\users\cli\appdata\local\temp\tmpouutgx
2209
INFO: Writing RT_GROUP_ICON 0 resource with 34 bytes
2211
INFO: Writing RT_ICON 1 resource with 1128 bytes
2213
INFO: Writing RT_ICON 2 resource with 4264 bytes
2222
INFO: Appending archive to EXE D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\pyinstaller-2.0\BlogsToWordpress\dist\BlogsToWordpress.exe
|
可以看到,其自动会把icon添加到当前已有的exe中,然后可以看到对应的,带图标的exe的效果:
总结
PyInstaller,的确非常好用啊。感谢作者们。
简单总结其使用方法:
-
生成单一的exe文件:
1
pyinstaller.py -F ..\BlogsToWordpress\BlogsToWordpress.py -
添加必要的搜索路径:
1
pyinstaller.py -F -p D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\crifan;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\crifan\blogModules;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\thirdparty;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\thirdparty\chardet; ..\BlogsToWordpress\BlogsToWordpress.py -
添加必要的搜索路径,且带图标:
1
pyinstaller.py -F -p D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\crifan;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\crifan\blogModules;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\thirdparty;D:\tmp\tmp_dev_root\python\tutorial_summary\make_exe\BlogsToWordpress\libs\thirdparty\chardet; -i ..\BlogsToWordpress\BlogsToWordpress.ico ..\BlogsToWordpress\BlogsToWordpress.py
需要注意的是:
1.检查生成的
pyinstaller-2.0\XXX\build\pyi.win32\XXX\warnXXX.txt
(XXX是你的项目名)
中,是否缺少了必要的模块。
如果有缺少的,那么去如上所述,添加必要的搜素路径,使得pyinstaller在运行时,可以找到对应的模块并集成进来。
2.此处我这里没有UPX,暂时没去折腾。
估计是用UPX去压缩,压缩后所生成的exe文件的大小,会小得多。