遵照 http://www.tribler.org/trac/wiki/browserplugin 中對swarmplugin的說明,首先需要編譯出bg process這個東東。
下載下傳源碼 svn co http://svn.tribler.org/abc/branches/mainbranch/,将源碼放到你自己指定路徑後執行
<a href="http://my.oschina.net/moooofly/blog/85709#">?</a>
1
2
3
4
5
<code>c:\python27>python.exe tribler\plugin\build\win32\setupbgexe.py py2exe</code>
<code>traceback (most recent call last):</code>
<code> </code><code>file</code> <code>"tribler\plugin\build\win32\setupbgexe.py"</code><code>, line</code><code>8</code><code>,</code><code>in</code> <code><module></code>
<code> </code><code>import</code> <code>py2exe</code><code># not a superfluous import!</code>
<code>importerror: no module named py2exe</code>
提示缺少py2exe子產品,從sourceforge上下載下傳py2exe-0.6.9.win32-py2.7.exe并安裝到預設路徑c:\python27\lib\site-packages\
=======================================
this package is a distutils extension to build
standalone windows executable programs from
python scripts.
author: thomas heller
author_email: [email protected]
description: build standalone executables for windows
maintainer: jimmy retzlaff
maintainer_email: [email protected]
name: py2exe
url: http://www.py2exe.org/
version: 0.6.9
=======================================
重新執行得到
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
<code>running py2exe</code>
<code>creating c:\python27\build</code>
<code>creating c:\python27\build\bdist.win32</code>
<code>creating c:\python27\build\bdist.win32\winexe</code>
<code>creating c:\python27\build\bdist.win32\winexe\collect</code><code>-</code><code>2.7</code>
<code>creating c:\python27\build\bdist.win32\winexe\bundle</code><code>-</code><code>2.7</code>
<code>creating c:\python27\build\bdist.win32\winexe\temp</code>
<code>creating c:\python27\dist</code>
<code>*</code><code>*</code><code>*</code> <code>searching</code><code>for</code> <code>required modules</code><code>*</code><code>*</code><code>*</code>
<code>c:\python27\tribler\player\swarmplayer.py:</code><code>451</code><code>: syntaxwarning: name</code><code>'start_time'</code> <code>is</code> <code>assigned to before</code><code>global</code> <code>declaration</code>
<code> </code><code>global</code> <code>start_time</code>
<code>*</code><code>*</code><code>*</code> <code>parsing results</code><code>*</code><code>*</code><code>*</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'vlc'</code> <code>(c:\python27\vlc.pyd</code><code>-</code><code>> vlc.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'unicodedata'</code> <code>(c:\python27\dlls\unicodedata.pyd</code><code>-</code><code>> unicodedata.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'win32pdh'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\win32\win32pdh.pyd</code><code>-</code><code>> win32pdh.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'_ctypes'</code> <code>(c:\python27\dlls\_ctypes.pyd</code><code>-</code><code>> _ctypes.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'select'</code> <code>(c:\python27\dlls\select.pyd</code><code>-</code><code>> select.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'win32event'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\win32\win32event.pyd</code><code>-</code><code>> win32event.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'wx._controls_'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\wx</code><code>-</code><code>2.8</code><code>-</code><code>msw</code><code>-</code><code>unicode</code><code>\wx\_controls_.pyd</code><code>-</code><code>> wx._co</code>
<code>ntrols_.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'apsw'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\apsw.pyd</code><code>-</code><code>> apsw.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'win32evtlog'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\win32\win32evtlog.pyd</code><code>-</code><code>> win32evtlog.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'win32file'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\win32\win32file.pyd</code><code>-</code><code>> win32file.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'wx._windows_'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\wx</code><code>-</code><code>2.8</code><code>-</code><code>msw</code><code>-</code><code>unicode</code><code>\wx\_windows_.pyd</code><code>-</code><code>> wx._wind</code>
<code>ows_.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'_hashlib'</code> <code>(c:\python27\dlls\_hashlib.pyd</code><code>-</code><code>> _hashlib.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'bz2'</code> <code>(c:\python27\dlls\bz2.pyd</code><code>-</code><code>> bz2.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'_ssl'</code> <code>(c:\python27\dlls\_ssl.pyd</code><code>-</code><code>> _ssl.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'_sqlite3'</code> <code>(c:\python27\dlls\_sqlite3.pyd</code><code>-</code><code>> _sqlite3.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'wx._core_'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\wx</code><code>-</code><code>2.8</code><code>-</code><code>msw</code><code>-</code><code>unicode</code><code>\wx\_core_.pyd</code><code>-</code><code>> wx._core_.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'wx._misc_'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\wx</code><code>-</code><code>2.8</code><code>-</code><code>msw</code><code>-</code><code>unicode</code><code>\wx\_misc_.pyd</code><code>-</code><code>> wx._misc_.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'wx._xrc'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\wx</code><code>-</code><code>2.8</code><code>-</code><code>msw</code><code>-</code><code>unicode</code><code>\wx\_xrc.pyd</code><code>-</code><code>> wx._xrc.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'m2crypto.__m2crypto'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\m2crypto\__m2crypto.pyd</code><code>-</code><code>> m2crypto.__m2</code>
<code>crypto.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'_win32sysloader'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\win32\_win32sysloader.pyd</code><code>-</code><code>> _win32sysloader</code>
<code>.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'wx._gdi_'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\wx</code><code>-</code><code>2.8</code><code>-</code><code>msw</code><code>-</code><code>unicode</code><code>\wx\_gdi_.pyd</code><code>-</code><code>> wx._gdi_.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'pyexpat'</code> <code>(c:\python27\dlls\pyexpat.pyd</code><code>-</code><code>> pyexpat.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'win32ui'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\pythonwin\win32ui.pyd</code><code>-</code><code>> win32ui.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'win32api'</code> <code>(c:\python27\lib\site</code><code>-</code><code>packages\win32\win32api.pyd</code><code>-</code><code>> win32api.pyd)</code>
<code>creating python loader</code><code>for</code> <code>extension</code><code>'_socket'</code> <code>(c:\python27\dlls\_socket.pyd</code><code>-</code><code>> _socket.pyd)</code>
<code>*</code><code>*</code><code>*</code> <code>finding dlls needed</code><code>*</code><code>*</code><code>*</code>
<code>error: python25.dll: no such</code><code>file</code> <code>or</code> <code>directory</code>
本人裝的python版本為2.7.3,這裡報沒有找到python25.dll,奇怪,沒辦法,隻好分析源碼。
先檢視setupbgexe.py,沒有發現特别的東西
<code>import</code> <code>os</code>
<code>from</code> <code>distutils.core</code><code>import</code> <code>setup</code>
<code>import</code> <code>py2exe</code><code># not a superfluous import!</code>
<code>from</code> <code>tribler.__init__</code><code>import</code> <code>libraryname</code>
<code>mainfile</code><code>=</code> <code>os.path.join(libraryname,</code><code>'plugin'</code><code>,</code><code>'swarmengine.py'</code><code>)</code>
<code># arno: 2009-06-09: changed from console= to make sure py2exe writes</code>
<code># a backgroundprocess.exe.log</code>
<code>#</code>
<code>setup(windows</code><code>=</code><code>[mainfile])</code>
再檢視py2exe包的__init__.py檔案
<code># py2exe/__init__.py</code>
<code># 'import py2exe' imports this package, and two magic things happen:</code>
<code># - the 'py2exe.build_exe' submodule is imported and installed as</code>
<code># 'distutils.commands.py2exe' command</code>
<code># - the default distutils distribution class is replaced by the</code>
<code># special one contained in this module.</code>
<code>__version__</code><code>=</code> <code>"0.6.9"</code>
<code>import</code> <code>distutils.dist, distutils.core, distutils.command, build_exe, sys</code>
<code>class</code> <code>distribution(distutils.dist.distribution):</code>
<code> </code><code>def</code> <code>__init__(</code><code>self</code><code>, attrs):</code>
<code> </code><code>self</code><code>.ctypes_com_server</code><code>=</code> <code>attrs.pop(</code><code>"ctypes_com_server"</code><code>, [])</code>
<code> </code><code>self</code><code>.com_server</code><code>=</code> <code>attrs.pop(</code><code>"com_server"</code><code>, [])</code>
<code> </code><code>self</code><code>.service</code><code>=</code> <code>attrs.pop(</code><code>"service"</code><code>, [])</code>
<code> </code><code>self</code><code>.windows</code><code>=</code> <code>attrs.pop(</code><code>"windows"</code><code>, [])</code>
<code> </code><code>self</code><code>.console</code><code>=</code> <code>attrs.pop(</code><code>"console"</code><code>, [])</code>
<code> </code><code>self</code><code>.isapi</code><code>=</code> <code>attrs.pop(</code><code>"isapi"</code><code>, [])</code>
<code> </code><code>self</code><code>.zipfile</code><code>=</code> <code>attrs.pop(</code><code>"zipfile"</code><code>,</code><code>"library.zip"</code><code>)</code>
<code> </code><code>distutils.dist.distribution.__init__(</code><code>self</code><code>, attrs)</code>
<code>distutils.core.distribution</code><code>=</code> <code>distribution</code>
<code>distutils.command.__all__.append(</code><code>'py2exe'</code><code>)</code>
<code>sys.modules[</code><code>'distutils.command.py2exe'</code><code>]</code><code>=</code> <code>build_exe</code>
由注釋可以看出,該檔案幹了兩件事,其中導入build_exe作為py2exe是和我相關的,于是檢視build_exe檔案。在該檔案中能夠找到上面出錯的最後一行列印的對應代碼 print "*** finding dlls needed ***"。
由經驗知道 error: python25.dll: no such file or directory 意思是打開檔案的時候出錯,要麼是檔案路徑不對,要麼是檔案名不對,總之未找到對應檔案,搜尋python27.dll,發現其位于c:\windows\system32下面,确實沒有python25.dll的影子(其實不搜尋也應該猜得到,畢竟我沒裝過python2.5嘛)
兩種解決辦法:
a) 下載下傳python25.dll,放置到和python27.dll相同的目錄下
b) 對build_exe.py進行修改
下載下傳python25.dll的方法可以參考百度百科說明 http://baike.baidu.com/view/6590620.htm
這裡說明下如何對build_exe.py進行修改,和這個問題有關的代碼如下
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
77
78
79
80
81
82
83
84
85
86
87
<code>......</code>
<code>def</code> <code>bin_depends(path, images, excluded_dlls):</code>
<code> </code><code>import</code> <code>py2exe_util</code>
<code> </code><code>warnings</code><code>=</code> <code>fileset()</code>
<code> </code><code>images</code><code>=</code> <code>fileset(images)</code>
<code> </code><code>dependents</code><code>=</code> <code>fileset()</code>
<code> </code><code>others</code><code>=</code> <code>fileset()</code>
<code> </code><code>while</code> <code>images:</code>
<code> </code><code>for</code> <code>image</code><code>in</code> <code>images.copy():</code>
<code> </code><code>images.remove(image)</code>
<code> </code><code>if</code> <code>not</code> <code>image</code><code>in</code> <code>dependents:</code>
<code> </code><code>dependents.add(image)</code>
<code> </code><code>abs_image</code><code>=</code> <code>os.path.abspath(image)</code>
<code> </code><code>loadpath</code><code>=</code> <code>os.path.dirname(abs_image)</code><code>+</code> <code>';'</code> <code>+</code> <code>path</code>
<code> </code><code>for</code> <code>result</code><code>in</code> <code>py2exe_util.depends(image, loadpath).items():</code>
<code> </code><code>dll, uses_import_module</code><code>=</code> <code>result</code>
<code> </code><code>if</code> <code>os.path.basename(dll).lower()</code><code>not</code> <code>in</code> <code>excluded_dlls:</code>
<code> </code><code>if</code> <code>issystemdll(dll):</code>
<code> </code><code>others.add(dll)</code>
<code> </code><code>continue</code>
<code> </code><code>if</code> <code>dll</code><code>not</code> <code>in</code> <code>images</code><code>and</code> <code>dll</code><code>not</code> <code>in</code> <code>dependents:</code>
<code> </code><code>images.add(dll)</code>
<code> </code><code>if</code> <code>uses_import_module:</code>
<code> </code><code>warnings.add(dll)</code>
<code> </code><code>return</code> <code>dependents, warnings, others</code>
<code># dlls to be excluded</code>
<code># xxx this list is not complete (it cannot be)</code>
<code># note: all entries must be in lower case!</code>
<code>excluded_dlls</code><code>=</code> <code>(</code>
<code> </code><code>"advapi32.dll"</code><code>,</code>
<code> </code><code>"comctl32.dll"</code><code>,</code>
<code> </code><code>"comdlg32.dll"</code><code>,</code>
<code> </code><code>"crtdll.dll"</code><code>,</code>
<code> </code><code>"gdi32.dll"</code><code>,</code>
<code> </code><code>"glu32.dll"</code><code>,</code>
<code> </code><code>"opengl32.dll"</code><code>,</code>
<code> </code><code>"imm32.dll"</code><code>,</code>
<code> </code><code>"kernel32.dll"</code><code>,</code>
<code> </code><code>"mfc42.dll"</code><code>,</code>
<code> </code><code>"msvcirt.dll"</code><code>,</code>
<code> </code><code>"msvcrt.dll"</code><code>,</code>
<code> </code><code>"msvcrtd.dll"</code><code>,</code>
<code> </code><code>"ntdll.dll"</code><code>,</code>
<code> </code><code>"odbc32.dll"</code><code>,</code>
<code> </code><code>"ole32.dll"</code><code>,</code>
<code> </code><code>"oleaut32.dll"</code><code>,</code>
<code> </code><code>"rpcrt4.dll"</code><code>,</code>
<code> </code><code>"shell32.dll"</code><code>,</code>
<code> </code><code>"shlwapi.dll"</code><code>,</code>
<code> </code><code>"user32.dll"</code><code>,</code>
<code> </code><code>"version.dll"</code><code>,</code>
<code> </code><code>"winmm.dll"</code><code>,</code>
<code> </code><code>"winspool.drv"</code><code>,</code>
<code> </code><code>"ws2_32.dll"</code><code>,</code>
<code> </code><code>"ws2help.dll"</code><code>,</code>
<code> </code><code>"wsock32.dll"</code><code>,</code>
<code> </code><code>"netapi32.dll"</code><code>,</code>
<code> </code><code>"gdiplus.dll"</code><code>,</code>
<code> </code><code>)</code>
<code># xxx perhaps it would be better to assume dlls from the systemdir are system dlls,</code>
<code># and make some exceptions for known dlls, like msvcr71, pythonxy.dll, and so on?</code>
<code>def</code> <code>issystemdll(pathname):</code>
<code> </code><code>if</code> <code>os.path.basename(pathname).lower()</code><code>in</code> <code>(</code><code>"msvcr71.dll"</code><code>,</code><code>"msvcr71d.dll"</code><code>):</code>
<code> </code><code>return</code> <code>0</code>
<code> </code><code>if</code> <code>os.path.basename(pathname).lower()</code><code>in</code> <code>excluded_dlls:</code>
<code> </code><code>return</code> <code>1</code>
<code> </code><code># how can we determine whether a dll is a 'system dll'?</code>
<code> </code><code># is it sufficient to use the image load address?</code>
<code> </code><code>import</code> <code>struct</code>
<code> </code><code>file</code> <code>=</code> <code>open</code><code>(pathname,</code><code>"rb"</code><code>)</code>
<code> </code><code>if</code> <code>file</code><code>.read(</code><code>2</code><code>) !</code><code>=</code> <code>"mz"</code><code>:</code>
<code> </code><code>raise</code> <code>exception,</code><code>"seems not to be an exe-file"</code>
<code> </code><code>file</code><code>.seek(</code><code>0x3c</code><code>)</code>
<code> </code><code>pe_ofs</code><code>=</code> <code>struct.unpack(</code><code>"i"</code><code>,</code><code>file</code><code>.read(</code><code>4</code><code>))[</code><code>0</code><code>]</code>
<code> </code><code>file</code><code>.seek(pe_ofs)</code>
<code> </code><code>if</code> <code>file</code><code>.read(</code><code>4</code><code>) !</code><code>=</code> <code>"pe\000\000"</code><code>:</code>
<code> </code><code>raise</code> <code>exception, (</code><code>"seems not to be an exe-file"</code><code>, pathname)</code>
<code> </code><code>file</code><code>.read(</code><code>20</code> <code>+</code> <code>28</code><code>)</code><code># coff file header, offset of imagebase in optional header</code>
<code> </code><code>imagebase</code><code>=</code> <code>struct.unpack(</code><code>"i"</code><code>,</code><code>file</code><code>.read(</code><code>4</code><code>))[</code><code>0</code><code>]</code>
<code> </code><code>return</code> <code>not</code> <code>(imagebase <</code><code>0x70000000</code><code>)</code>
分析後可知,錯誤列印 error: python25.dll: no such file or directory 應該是代碼 file = open(pathname, "rb") 産生的,從函數issystemdll()的注釋可以看出,應該對一些特别版本的dll進行排除,那麼可以做如下修改:
<code>if</code> <code>os.path.basename(pathname).lower()</code><code>in</code> <code>(</code><code>"msvcr71.dll"</code><code>,</code><code>"msvcr71d.dll"</code><code>):</code>
改為
<code>if</code> <code>os.path.basename(pathname).lower()</code><code>in</code> <code>(</code><code>"msvcr71.dll"</code><code>,</code><code>"msvcr71d.dll"</code><code>,</code><code>"python25.dll"</code><code>):</code>
此時執行結果為
<code> </code><code>file</code> <code>"tribler\plugin\build\win32\setupbgexe.py"</code><code>, line</code><code>16</code><code>,</code><code>in</code> <code><module></code>
<code> </code><code>setup(windows</code><code>=</code><code>[mainfile])</code>
<code> </code><code>file</code> <code>"c:\python27\lib\distutils\core.py"</code><code>, line</code><code>152</code><code>,</code><code>in</code> <code>setup</code>
<code> </code><code>dist.run_commands()</code>
<code> </code><code>file</code> <code>"c:\python27\lib\distutils\dist.py"</code><code>, line</code><code>953</code><code>,</code><code>in</code> <code>run_commands</code>
<code> </code><code>self</code><code>.run_command(cmd)</code>
<code> </code><code>file</code> <code>"c:\python27\lib\distutils\dist.py"</code><code>, line</code><code>972</code><code>,</code><code>in</code> <code>run_command</code>
<code> </code><code>cmd_obj.run()</code>
<code> </code><code>file</code> <code>"c:\python27\lib\site-packages\py2exe\build_exe.py"</code><code>, line</code><code>243</code><code>,</code><code>in</code> <code>run</code>
<code> </code><code>self</code><code>._run()</code>
<code> </code><code>file</code> <code>"c:\python27\lib\site-packages\py2exe\build_exe.py"</code><code>, line</code><code>305</code><code>,</code><code>in</code> <code>_run</code>
<code> </code><code>dlls</code><code>=</code> <code>self</code><code>.find_dlls(extensions)</code>
<code> </code><code>file</code> <code>"c:\python27\lib\site-packages\py2exe\build_exe.py"</code><code>, line</code><code>389</code><code>,</code><code>in</code> <code>find_dlls</code>
<code> </code><code>self</code><code>.dll_excludes)</code>
<code> </code><code>file</code> <code>"c:\python27\lib\site-packages\py2exe\build_exe.py"</code><code>, line</code><code>1064</code><code>,</code><code>in</code> <code>find_dependend_dlls</code>
<code> </code><code>bin_depends(loadpath, images</code><code>+</code> <code>[sys.executable], excludes_use)</code>
<code> </code><code>file</code> <code>"c:\python27\lib\site-packages\py2exe\build_exe.py"</code><code>, line</code><code>1438</code><code>,</code><code>in</code> <code>bin_depends</code>
<code> </code><code>for</code> <code>result</code><code>in</code> <code>py2exe_util.depends(image, loadpath).items():</code>
<code>py2exe_util.bind_error: (</code><code>2</code><code>, '</code><code>', '</code><code>python25.dll')</code>
呵呵,貌似不行,并且隻有py2exe_util.pyd檔案,沒有源檔案,無法進一步知道不行的原因,故換另外一種方法:在excluded_dlls增加"python25.dll",執行結果如下
<code>error: msvcp90.dll: no such</code><code>file</code> <code>or</code> <code>directory</code>
解說說明錯誤說明找不到 python25.dll的問題已經沒有了,但是需要庫msvcp90.dll。該庫是microsoft c++ runtime library,是使用microsoft visual studio 2008編譯出的程式預設依賴的庫檔案。按道理我電腦已經安裝了vs2008,該庫應該是存在的,但是現在的情況是其确實不在c:\windows\system32目錄下面(和其他系統路徑下),故搜尋出我電腦上該檔案并拷貝到c:\windows\system32下面,執行程式,終于得到了正确的結果,如下
<code>*</code><code>*</code><code>*</code> <code>create binaries</code><code>*</code><code>*</code><code>*</code>
<code>*</code><code>*</code><code>*</code> <code>byte</code><code>compile</code> <code>python files</code><code>*</code><code>*</code><code>*</code>
<code>skipping byte</code><code>-</code><code>compilation of ......</code>
<code>skipping byte</code><code>-</code><code>compilation of c:\python27\tribler\vlc.py to tribler\vlc.pyc</code>
<code>byte</code><code>-</code><code>compiling c:\python27\build\bdist.win32\winexe\temp\m2crypto.__m2crypto.py to m2crypto\__m2crypto.pyc</code>
<code>byte</code><code>-</code><code>compiling ......</code>
<code>skipping byte</code><code>-</code><code>compilation of c:\python27\lib\zipfile.py to zipfile.pyc</code>
<code>*</code><code>*</code><code>*</code> <code>copy extensions</code><code>*</code><code>*</code><code>*</code>
<code>*</code><code>*</code><code>*</code> <code>copy dlls</code><code>*</code><code>*</code><code>*</code>
<code>copying c:\python27\lib\site</code><code>-</code><code>packages\py2exe\run_w.exe</code><code>-</code><code>> c:\python27\dist\swarmengine.exe</code>
<code>the following modules appear to be missing</code>
<code>[</code><code>'elementc14n'</code><code>,</code><code>'tribler.core.buddycast.buddycast'</code><code>,</code><code>'_curses'</code><code>,</code><code>'_scproxy'</code><code>,</code><code>'core.bootstrap'</code><code>,</code><code>'core.identifier'</code><code>,</code><code>'core.message'</code><code>, 'c</code>
<code>ore.node</code><code>', '</code><code>core.ptime</code><code>', '</code><code>core.routing_table</code><code>', '</code><code>meliae</code><code>', '</code><code>netifaces</code><code>', '</code><code>prctl</code><code>', '</code><code>psyco</code><code>', '</code><code>simplejson</code><code>', '</code><code>test_const</code><code>', '</code><code>vlc.lib.vlc',</code>
<code> </code><code>'win32com.shell'</code><code>]</code>
<code>*</code><code>*</code><code>*</code> <code>binary dependencies</code><code>*</code><code>*</code><code>*</code>
<code>your executable(s) also depend on these dlls which are</code><code>not</code> <code>included,</code>
<code>you may</code><code>or</code> <code>may</code><code>not</code> <code>need to distribute them.</code>
<code>make sure you have the license</code><code>if</code> <code>you distribute</code><code>any</code> <code>of them,</code><code>and</code>
<code>make sure you don't distribute files belonging to the operating system.</code>
<code> </code><code>ole32.dll</code><code>-</code> <code>c:\windows\system32\ole32.dll</code>
<code> </code><code>oleaut32.dll</code><code>-</code> <code>c:\windows\system32\oleaut32.dll</code>
<code> </code><code>user32.dll</code><code>-</code> <code>c:\windows\system32\user32.dll</code>
<code> </code><code>python25.dll</code><code>-</code> <code>python25.dll</code>
<code> </code><code>shell32.dll</code><code>-</code> <code>c:\windows\system32\shell32.dll</code>
<code> </code><code>mswsock.dll</code><code>-</code> <code>c:\windows\system32\mswsock.dll</code>
<code> </code><code>winmm.dll</code><code>-</code> <code>c:\windows\system32\winmm.dll</code>
<code> </code><code>wsock32.dll</code><code>-</code> <code>c:\windows\system32\wsock32.dll</code>
<code> </code><code>comdlg32.dll</code><code>-</code> <code>c:\windows\system32\comdlg32.dll</code>
<code> </code><code>advapi32.dll</code><code>-</code> <code>c:\windows\system32\advapi32.dll</code>
<code> </code><code>mfc90.dll</code><code>-</code> <code>c:\python27\lib\site</code><code>-</code><code>packages\pythonwin\mfc90.dll</code>
<code> </code><code>msvcrt.dll</code><code>-</code> <code>c:\windows\system32\msvcrt.dll</code>
<code> </code><code>ws2_32.dll</code><code>-</code> <code>c:\windows\system32\ws2_32.dll</code>
<code> </code><code>winspool.drv</code><code>-</code> <code>c:\windows\system32\winspool.drv</code>
<code> </code><code>gdi32.dll</code><code>-</code> <code>c:\windows\system32\gdi32.dll</code>
<code> </code><code>gdiplus.dll</code><code>-</code> <code>c:\python27\lib\site</code><code>-</code><code>packages\wx</code><code>-</code><code>2.8</code><code>-</code><code>msw</code><code>-</code><code>unicode</code><code>\wx\gdiplus.dll</code>
<code> </code><code>version.dll</code><code>-</code> <code>c:\windows\system32\version.dll</code>
<code> </code><code>kernel32.dll</code><code>-</code> <code>c:\windows\system32\kernel32.dll</code>
<code> </code><code>comctl32.dll</code><code>-</code> <code>c:\windows\system32\comctl32.dll</code>
<code> </code><code>rpcrt4.dll</code><code>-</code> <code>c:\windows\system32\rpcrt4.dll</code>
<code> </code><code>msvcp90.dll</code><code>-</code> <code>c:\windows\system32\msvcp90.dll</code>
此時已經編譯出了swarmengine.exe位于c:\python27\dist目錄下,但是輕按兩下執行時,仍舊不能正常安裝,錯誤日志檢視swarmengine.exe.log解決,本文不再說明。