掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5192|回复: 14

[教程] 重新打包Mdx/Mdd的一点偶得. [2016.07.08更新]

[复制链接]

该用户从未签到

发表于 2016-6-12 03:25:22 | 显示全部楼层 |阅读模式
本帖最后由 idict 于 2016-10-30 08:08 编辑
7 V7 @* y! s% ]. w1 v7 Y1 [  \5 z, N% x6 p4 s/ m+ B8 @4 `2 R$ {" b* K: q
首先多谢各位的帖子, 和论坛前辈们的教学帖, 以及大神们分享的词典. 让人受益良多. 非常感谢. 也非常感谢以下要使用到的软件的作者们!
' J( D7 ]( ~# |$ T0 a
+ z0 x* Z9 w% n4 f' m6 W  \愚人千虑偶有一得. 在重新打包Mdx/Mdd的过程中有点体会. (重申: 只是重新打包的过程, 其他的如排版等等...的并不会.)1 A4 i7 C% p2 e# m
* q5 t( s# s3 ?" d& p
重新打包的目的是希望继续使用Mdict PC版(因Mp3文件不能发音; GoldenDict是很好, 也很庞大, 需要时间学习).
. W3 C2 b4 R2 FGetDict.exe v2.6很好, 在转换后会将目录名合并到文件名当中(需要重建目录结构也是麻烦事). 只好使用Readmdict.py了.
& \5 J2 K$ U( {& y7 B% W
' y5 l1 o$ q: G4 _9 v安装Python之32位版本(64位版本在全部下载里可以找到), 使用Python 2.7.x版本(Python 3.5.x双击不能引用Tkinter[可以自行改为3.5之兼容名], 在命令行输入参数是没有问题的). 安装选项: 全选 (必须的, 不然要手动增加Python的路径到Path)! L) d( E6 D* T. u" C% Q
https://www.python.org/downloads/
) Y- W" y, c; |* C* e
8 \' e' b' f2 S+ A5 ]7 r7 `9 F* d9 g" o安装Python-lzo, 似乎这个不用安装也可以解压Mdd. 但XWang提到要安装. 就装上吧.
$ n: ]2 ^* R) ?, |http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-lzo
2 z1 P( m3 x; o; R$ p: f& {# R0 X, l8 N- T6 @( K; G
下载32位2.7版的, 64位的不能安装(即使在64位Windows, 版本位数是依据所安装的Python版本位数): python_lzo-1.11-cp27-none-win32.whl
9 d! R  j4 P5 j, T然后以[管理员](重要, 否则不能正常安装)打开命令行窗口cmd.exe. 输入: (文件的目录名, 换成所在的下载目录名, 我的下载目录名是: r:\downloads, [下同]. 输入whl必须是全名, 也不能改名, 否则会出错.)) a7 f, ~0 j2 s' f+ n% L  l7 e. g
  1. pip install r:\downloads\python_lzo-1.11-cp27-none-win32.whl
复制代码

. m5 R" T% \  x, R, C(如果pip提示要升级, 就按提示方式升级, 再安装也可)  r& c. a8 ^# b( |6 e
  1. python -m pip install --upgrade pip
复制代码

  L$ ?' n- T3 N, C查看是否安装成功:; \2 j% _: s! d' T6 h) e- a- j: _
  1. pip list
复制代码

0 a% w" B0 K. Z8 l& s3 t如果成功:% H! v% f$ g0 b/ ~# i
  ]3 K6 Z2 U  N7 B. u7 U
4 w2 R6 R8 {$ |% C2 R/ h7 \' F; k
下载Readmdict.py
- R+ P( j6 Y, l7 S! Z3 q& P3 ahttps://bitbucket.org/xwang/mdict-analysis/downloads
. z$ b/ B, U6 w8 ~1 V$ a: D2 c解压zip后可以直接双击运行 Readmdict.py 选择要解压的mdx, 相同名称的mdd会一并解压. [***重要步骤***]' }% a" F6 o/ g- m8 s, Q
就会生成相应的txt和data目录.7 ]& S: I1 D, v. f

% Z) ]. i8 |1 t; s& _2 V0 H+ w  |在解压一些Mdd时, 如果有目录名是Windows的系统保留字时, 就会出错(如OALD9, 如图Title):0 \. h0 Q/ \, T1 w7 Y6 w! [
8 U* T# ?7 F8 Z" N1 I( r

" q" o: M+ N' U, s9 J$ ]6 q只好更改目录名称了.9 C' E- C$ \( E* Z, R
打开Readmdict.py(不要用Windows自带的编辑器)
; j5 y4 C5 I, ~- u1 n2 i! R. E- @在700-701行之间增加替换目录名称的代码: 必须注意缩进, 建议不要用Tab, 改为空格(这是Python的建议), 或在编辑器中选中: Tab转为空格; 4个空格为一个缩进.
. ?) E& c: [2 V+ J2 e; J- h插入的代码时对齐上一行的fname = ...' y7 I) J- U0 c2 i8 ?: ?! o
  1.                 win_key = '\\con\\'          # Windows系统保留字" N6 w$ O3 B6 j+ u0 a7 S
  2.                 if fname.find(win_key) >= 0:
    * A; C, O! x6 d, Q0 X' V, _2 o
  3.                     win_key_sub = '\\con_win\\'         # 替换的非保留字& B% Z4 o1 h$ @
  4.                     fname = fname.replace(win_key, win_key_sub)         # 更换原字符串
复制代码
$ o. l/ k* j. B+ N
这样目录名: con 就会变成: con_win (其他的关键字没有作处理, 有一个改一个而已, 因为水平啊)
0 k  ~5 S" \- j: K0 k. u( X, A9 Y+ f相应地, 在Mdx的txt文件就必须要改替换: /con/ 为: /con_win/ [***重要步骤***]
5 u/ }) G- ?) L. I* C附件中Readmdict_mod.py是增加后的py文件.
: Q" a! }" j+ y) |- O7 M1 q' k
6 ^. F- q" M  K1 Q& A+ Q5 @4 {& `接下来就是转换Mp3为Spx了. (附件中lame.exe v3.99.5, speexenc.exe v1.2beta2)7 }% r8 U0 u; A
在转换spx之前必须将mp3转换为wav, 建议使用Lame.exe" r0 g( w3 D( l
http://www.rarewares.org/mp3-lame-bundle.php, i5 b: A: ~8 B- s- V  B$ j/ K

* V$ a0 U# ]( F& L3 E- Q再将wav转spx, 但这个speexenc.exe的1.2beta1.3并不兼容Win 7之后的系统. (或MdxBuilder里带的speexenc.exe都不兼容)0 X) w2 o3 a  N' D9 l
http://www.speex.org/downloads/
+ P# p: L4 m% x; G6 ?# G
7 E7 b6 ~& {; D( e+ e: E: A所以就要找其他的版本. 附件中是1.2beta2可以兼容(取自于Audio Transcoder, 这个软件在转换过程中很吃内存. 一下子就吃光了[在安装时会有附加软件]. speexdrop很好, 但不支持目录)
3 b( W( k3 {, _5 W8 d% V7 R这个是MSVC9, 微软的编译器. 兼容. (虽然写是1.2rc1, 但实质上是1.2beta3)
$ [0 Z1 X) i' r& Z9 B! G9 k3 g- v: ahttp://www.rarewares.org/others.php#speex-unstable-win1 P% N. s, E* J. G, |3 V  A: O

) q4 e+ A6 Y) `+ K7 o现在要考虑的是:0 s/ `! T% d4 d  j8 B3 C# p+ D
speexenc.exe对采样率8/16/32kHz有优化. 而且mp3的采样率通常是16/22.05/44.1kHz, 不在同一采样率上.
2 ^; C0 @& H- c  V$ }6 p' f, _  i7 D如果重新采样, 会增加转码时间. 如果不重新采样, speexenc.exe在转码时的编码率会不尽相同. 转换后文件大小也不尽相同. 通常变大多1/3-1倍.
, B, Z* F, Z2 J! Q6 M% I1 u所以选择重新采样, 这样可以用时间弥补质量上和文件大小的差别. 于量尝试写批处理.
) Z7 w2 |$ [" ]3 l0 l5 K. X3 s9 C6 I
  1. :: convert mp3 to spx- z, U5 H5 h3 z' I
  2. @echo off
    * K/ i$ k; G: O1 H: C) F) |) G
  3. color 3f% @& V5 A0 X! h% ]& B& N: x
  4. cls8 _3 e" I5 Z  ^. V6 i7 R
  5. 5 z. N" G0 l% j* S: C
  6. + ]" v" O8 O) K) F& z
  7. :~begin
    : q. n9 [, S) j8 K
  8. :: mp3所在的文件夹全路径名3 k) D5 t) P# \( `7 ?: P! X
  9. set _folder=r:\downloads\data% Z' [5 q1 _! y9 d8 n
  10. if not exist "%_folder%" (
    ! s$ W6 v4 N. p9 t4 F
  11. echo. %_folder% 文件夹不存在.5 J7 S2 e& c4 \
  12. goto :~end)
    ' u9 e. m7 d8 p! j+ u  `# L

  13. 6 u1 x9 }5 y# M; j) Z
  14. for /f "delims=" %%i in ('dir /b /s "%_folder%\*.mp3"') do (
    2 p" r) Q  ?( K% F8 f
  15. echo. %%~fi
    8 B4 i! F( V( l1 [
  16. lame.exe --silent -b 32 -m j -h --resample 32 "%%~fi" "%%~dpni_new.mp3"
    9 W, U- S; J/ f# C# s
  17. del "%%~fi"$ p; ]! E8 U5 ?$ l& G# ]
  18. lame.exe --silent --decode "%%~dpni_new.mp3" "%%~dpni.wav"
    5 y( a9 e- Q# ]9 t0 Q* @; H  ~
  19. del "%%~dpni_new.mp3"
    6 X$ Q+ ^; h- u9 o+ F8 _! ^7 K
  20. speexenc.exe -u --bitrate 24000 "%%~dpni.wav" "%%~dpni.spx"1 q$ o; b6 A" I; x5 e( d2 V+ @
  21. del "%%~dpni.wav"
    7 P# o1 T6 D: V/ f6 x' n2 m
  22. )
    2 p9 t" I! [% D2 U2 r

  23. # c- M1 A+ y/ _7 g7 E9 Q
  24. 9 U0 a6 z% n' c8 Y" A
  25. :~end
复制代码

5 w0 R3 a. n5 G' p) c7 ~" f第9行是mp3所在目录名. (我的是: r:\downloads\data)
0 [5 K5 h  }, j4 ]5 U' W6 |4 b第16行是用Lame.exe对mp3重新采样. 参数: -b 32 是编码率: 32kbps,  参数: --resample 32 是采样率: 32kHz. 如果Mdd里mp3是24kbps, 11kHz的质量不算好(如果相同参数转为spx就质量损失很大). 质量好是22kbps, 22.05kHz.) a! Z7 U- R: j! Y* M8 R
第18行是用Lame.exe对mp3解码为wav.* y. c# Q! E. ?. p% y9 F6 ~
第20行是用Speexenc.exe对wav重新编码压缩为spx. 参数: -u 是32kHz采样率优化, 参数: --bitrate 24000 是编码率. 可对应原mp3的码率而定. 如果原来mp3是24kbps, 22.05kHz, 经重新编码为24kbps, 32kHz的spx文件大小大致上没有变化. 而且保持相当质量.( R6 u1 X8 M$ \- }, Z1 m
第17/19/21行是删除mp3/wav文件. 所以必要备份数据.
, S: W0 i/ j8 K  y/ R- M: p: ^6 `: q* x$ H1 X) ]* ^( {
然后打开cmd.exe命令行窗口运行批处理. [***重要步骤***]$ @# W! R8 P: w3 A
附件中convert2spx.cmd
: W7 k& J8 L& ]9 J) F- n! Q. j( |, V7 |  c, A" v/ F
这个批处理可转换目录结构里的mp3. 但没有排错的功能. 所以不能用Ctrl-C中断. 如果中断了, 可能会增加重新采样的新文件如: *_new.mp3/wav/spx等文件. 就会发生文件数量不一致了.
( ^7 G+ y5 F: o# Z  l如果mp3文件是128kbps, 44.1kHz的话, spx最好也是32kHz采样率. 至于编码率32kbps的质量也是很优秀的了, 文件大小也很优秀, 毕竟speex是针对语音优化压缩的. 或许是使用ogg格式编码的. 应该比mp3格式好吧. (重新采样时, 相应将编码率改为128kbps: -b 128)) k+ n; n6 C2 Q7 }) a. S9 a& H, A' F
转码时间是很漫长的, 15万个mp3文件可能要8个小时, 看机器的情况. 完成转码后吃不到1GB内存, 或者更少吧.
& Q; v- d. R& g& [4 T完成转码后, 再次核对文件数量是否一致. 到目前为止, 还没有不一致的情况. 还好.
& Z$ P: _3 z/ T8 J
6 h: V( X5 O) \7 P$ e4 z* E相应地, 在Mdx的txt文件就必须要改替换: .mp3 为: .spx [***重要步骤***]
, k5 }4 F' O) ~" w# i/ [* V7 L如果一致就可以用MdxBuilder直接重新打包了. 通常都将css和js放在data目录下一起打包为mdd. 以免丢掉了.7 j8 E  y; g5 M5 [) g
" Y6 [# S0 V- N7 u; t- ?( ^" \
这样就可以在Mdict PC也使用. 目前也有一些js不能正常运行的. 因水平有限就不知道是什么原因了.3 }) k. l' N: [( ^; \1 E" B

' f* r- b# ?& i% Y: @3 D0 y) _0 n0 m: E3 O8 R9 G  ?  v2 c/ m+ M
但就不会出现不能播放的问题了.
3 x! {7 n' I3 r- O5 ^* W- Z; J: Q7 Z  [) \2 D
4 q; F* C8 v  [; _1 z9 e" T
再次多谢各位! 谢谢.8 T- |5 h" d2 `& x, ~5 }0 w
(再次重申: 只是重新打包的过程, 其他的如排版等等...的并不会.)
+ T# a4 @, ?; [7 G, G6 g+ p8 e
  T6 X: X9 m: ~4 I; e" n4 F, e( W% _% F: v( a
(如需要, 请下载下面更新的附件[适用全部的关键字和关键字符{除\外}])  v9 E& m& v$ ~( j  d4 N

: v$ x) T0 c$ w/ L! x
8 ?7 [, U2 Q- L6 N3 h! D5 V
" t8 E/ Q; l# e( ^% [. V* n  M; B: O: Y" U3 U1 J

' G0 A3 w: r" r6 W7 Q2016.07.08更新
+ e' g$ P. a  C: ^+ e2 T% n
, f1 j% r4 e- s2 Q6 ^9 `经过漫长的摸索, 终于对Python有点了一丁丁点的了解. 并转到了Python 3.5.x4 I- F- y  \2 p. V+ [. f
查看了有关Windows的关键字和关键字符. (谢谢asicsfree, PurlingNayuki的信息)
2 W: T$ |6 B' [! N/ fhttps://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
1 s( t  [0 G- M) r+ d& Y6 B
; n7 S( ]* M4 e/ m/ V2 x5 B
The following reserved characters:
% P3 k8 w+ t! [( t    < (less than)
6 G3 c$ v7 D7 ?5 o    > (greater than)
  Q3 u" e$ E' P# O2 v7 F% @    : (colon)6 b, U8 P3 m  t2 S  Y
    " (double quote)
+ e: u9 Z9 U8 m: R# E; q    / (forward slash)
. a* {  R. @2 a) J/ k    \ (backslash); ]3 M4 r  x) @/ B7 R$ E% n: C
    | (vertical bar or pipe)
1 D  {4 u; U5 N4 \; i( ^6 R8 c( b. Z& k5 t    ? (question mark)
/ Q  G( U- R; }$ Z4 ?  o& o& C    * (asterisk)
Do not use the following reserved names for the name of a file:' O( `) a6 d) p8 J  g
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.

4 {. [+ I5 H  R, [! k$ n3 M所以重新整理了一下Windows下的文件名/文件夹名称的问题.
7 A' P& ^+ o4 q; W. _' E, q首先是readmdict.py在Python 3下不能导入Tkinter, 原来是改了名字为: tkinter
$ Y/ e+ l7 c* h1 u- ^4 R- [  H! t因此将634-638行换成: (以下全部都要注意缩进), d2 r0 l  J" W; S
  1.         from tkinter import filedialog
    # x! k- R1 Y- F; t
  2.         from tkinter import *
    ; U. f* s- V+ X) p1 g% t
  3.         root = Tk()8 [$ ?, C, ^+ D! M
  4.         root.withdraw()
      @" Y* m0 _6 L2 Y# j1 @
  5.         args.filename = filedialog.askopenfilename(initialdir = os.path.abspath('..'), title = "Select a mdx/mdd file:", filetypes = (("mdx/mdd files", "*.mdx *.mdd"), ("all files", "*.*")))
复制代码
& a8 p2 D2 N* Q* R0 w
至于关键字和关键字符.1 w, V6 ^/ i  n* R/ u
在第696-697行插入:" b: o+ f/ i: _
  1.             win_chr = re.compile(r'(<|>|:|"|\/|\||\?|\*)')      # Windows系统保留字符% n9 ^0 i: Z5 h
  2.             win_key = re.compile(r'\\(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])\\', re.I)      # Windows系统保留字
复制代码

1 l0 X/ Z) t, [# P在第703-704行插入:
1 ~' T6 ~8 i; [4 {  u
  1.                 re_obj = re.search(win_chr, fname)
    , w" N2 w% L7 z
  2.                 if re_obj:
    ! U- D% r9 I: h
  3.                     fname = re.sub(win_chr, r'_', fname)        # 更换保留字符为: _
    3 h3 c: s. ~1 v) \5 R/ G9 U$ W7 I* f
  4.                     print(r'___ substituted "_" for "%s" ___ %s' % (re_obj.group(), fname))
    : S! Y) Y* G5 j" m- P
  5.                 re_obj = re.search(win_key, fname)
    / A& v2 O2 A( u3 r& @( @% X
  6.                 if re_obj:+ R7 @9 v; O2 D; h  I8 b2 a) U$ ~
  7.                     fname = re.sub(win_key, r'\\\1_win\\', fname)     # 更换保留字为: *_win
    7 X7 g- l. D( K' a- Z
  8.                     print(r'+++ substituted "\%s_win" for "%s"' % (re_obj.group().replace('\\', ''), re_obj.group()))
复制代码

- a0 \9 [; B+ a建议打开命令行窗口运行文件. 这样可以用手抄下更改了的文件夹名和文件名(假如是有的话, 会显示).
" n% T/ X: W) l3 Q" S6 p& e0 Z9 J
见附件中的readmdict3_mod.py8 o8 B" v5 {: z0 v1 p
而readmdict2_mod.py是Python 2.7.x适用.
- i3 p; l: z' m0 O4 H. T8 x! W  W
6 K+ B1 B4 H$ T- e1 R0 T* h3 j另外, 由于mp3转spx是极耗时间的事(而且还重新采样[目的是保证spx的品质], 更多耗了一些时间. 于是尝试学习使用Python 3.5.x多线程调用外部命令, 以提高转换效能.
1 g  [& P/ w7 b由于是新手, 始终都没有办法了解到调用Popen()后何时才能知道外部命令完成的信息. 如果使用communicate()或wait()的话, 好像与单线程一样, 要完成了才执行一下个指令, 与call()无区别. 即使已经开了多线程, 情况没有什么改善.
2 I) G& Q0 }7 d  f& ^  F所以就使用呆呆法(还请不吝赐教. 谢谢.): 一次转换使用一次循环. 因此三次转换就用了三次循环, 还是采用Popen(). 这样效能还是很高的. 线程数取于CPU核心数目. 这时CPU的占时可是100%全速开转.2 r. Y0 {$ c1 C+ y1 G. u
手提电脑要谨用. 不然的话, 风扇是极速狂转的. 很热很热的. (所以用dos转换就悠悠的. 反正晚上开转, 第二天早上基本就转好了.)
! i; i( L$ r# W/ d. }测试了一下, 线程数可以根据需要修改. 分别选1/2, 1, 2倍于CPU核心数目, 但等于核心时的耗时最少, 效能最好. 至于内存的情况, 呈浪涌形, 吃了5/600MB, 之后会释放掉. 情况良好.
. I$ B  y/ p. S/ A, H+ c无论是用dos转, 还是用Python转, 都会删除原mp3文件的. 所以必须做好数据的备份." A8 Z4 F2 l) [( I: ^, x) E5 Q
见附件的convert2spx.py适用于Python 3.5.x for Windows (没有做出错保护的功能, 也没有纠错能力. 在正常情况可以正常使用而已).1 h$ b0 O) ^% G0 J. s; l9 y; s# L" n

5 U  |# d" F" x& Y% A' [& ~6 X: v* I: S1 S, s7 ~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

本帖被以下淘专辑推荐:

  • · Python|主题: 10, 订阅: 5
  • TA的每日心情
    开心
    2018-8-15 07:35
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    发表于 2016-6-12 07:35:23 | 显示全部楼层
    楼主大才,那个保留字的问题困扰我很久了。非常感谢。

    该用户从未签到

    发表于 2016-6-12 20:27:44 | 显示全部楼层
    保留字好像有
    5 G- Q# z8 K( n
    : J+ f' o% Y, x2 `) J& s3 V   CON   COM1 - COM4
    8 E6 ^! u5 e" T- ~- t, u( b) \& Q   PRN   AUX    LPT1, V: P$ G" \* z& [' S, X5 b
                                    % L9 N  c( `/ W" |& A8 g
    : G# u5 }4 P( J: m
    https://goo.gl/gQ90qV

    该用户从未签到

    发表于 2016-6-12 20:44:38 | 显示全部楼层
    PC 上的話,GoldenDict 不知為何要「重新學習」?我覺得一切都很直覺。lzo 什麼的,應該 pip 可以直接線上安裝。

    该用户从未签到

     楼主| 发表于 2016-6-15 11:24:48 | 显示全部楼层
    本帖最后由 idict 于 2016-6-15 11:26 编辑 * \8 |- {. c3 @8 H) _
    lzo 什麼的,應該 pip 可以直接線上安裝。
    6 B, s/ H6 e/ I' x& ?5 h# @. G6 V3 l
    & I2 ?) o0 s: c+ W4 A
    在线安装python-lzo会出错, 下载官方安装包打开setup.py安装也出错. 实在是水平有限, 没有办法排错. 幸好还可以找到whl编译版. 可以装上. (好像不安装也可以解压. 但readmict.py会检查, 装上求正常)" H/ i( L0 e) K& x( c* O, A' c
    第一次使用Python, 需要了解的东西实在是太多了.

    该用户从未签到

     楼主| 发表于 2016-6-28 12:24:47 | 显示全部楼层
    本帖最后由 idict 于 2016-6-29 01:08 编辑
    ! ~4 z: H+ O! g) f+ e. d- j1 j3 A( ^
    关于Python/Windows平台pip安装的情况, 有些是可以直接安装的, 比如BeautifulSoup, 因为是直接用Python写的. 不需要用到C编译器. 如果安装lxml就需要安装C编译器. 这可多工作量了.* z  n5 c: i7 q8 ]4 a, F& I
    版本兼容:# E; Q8 a# i+ g4 _$ _/ k) P
    https://wiki.python.org/moin/WindowsCompilers4 F9 m0 o  X) X) u: _/ T
    如果是Python 2.7
    ( p# S# U& q$ ?- d" Shttps://www.microsoft.com/en-us/download/details.aspx?id=442669 ^8 h) n% E7 P: @: k
    如果是Python 3.5! j+ y8 ^3 U5 v6 V
    http://landinghub.visualstudio.com/visual-cpp-build-tools
    ; x- `, L  c+ @也可以用MinGW (x86)的. (不知道兼容性如何)4 v3 t$ M5 L0 |! }
    https://sourceforge.net/projects/mingw/files/
    , T4 {7 T% {1 W" d, {2 q: K+ o1 l, b: {1 n8 \1 r
    折腾了好几天, 最后还是选用别人编译好的whl版直接简单方便快捷.
    , S4 z. @6 U6 g% D* }4 d因为MSVC14下载要4GB, 安装完要6GB, 编译过程还有一堆问题在. 版本的兼容, 头都大了. 当然是自己的能力有限的问题了.: D. h# g5 E% y7 k
    还是伸手的方便啊. 虽然是非官方的.
    9 e0 Y0 b6 G8 o; thttp://www.lfd.uci.edu/~gohlke/pythonlibs/# r# h/ K0 Q7 }! z
    5 J% T' W9 g6 T7 Z- u
    相应找到版本下载直接安装就可以了. (lxml也有的)6 R6 Y9 U+ R+ i- i" M0 Z3 }
    比如安装了64位的Python3.5, 下载3.5/64位cp35*amd64.whl文件.
      X, w$ Z3 q" R, y- I如果是安装了32位的Python3.5, 就下载3.5/32位的cp35*win32.whl文件.4 s- O+ V6 f: K- q" q! Z' l8 |6 ~
    如果是安装了64位Python2.7, 就找cp27*amd64.whl文件. 32位就相对应为cp27*win32.whl文件.0 T" ^+ [! q/ n
    即不是依操作系统的版本, 而是根据所安装Python的版本来下载whl文件来安装.1 c" S6 w4 U+ ?% m2 N% s* |
    才几十KB到几MB. 不装6GB的MSVC14了.. O! ^4 ~* R8 Q

    ) F" I3 d8 B! q5 S3 `" b非常谢谢.5 u/ N  t) D2 e# J$ y* Y8 `

    该用户从未签到

    发表于 2016-6-28 22:08:59 | 显示全部楼层
    本帖最后由 asicsfree 于 2016-6-28 22:46 编辑
    0 z, g. X9 h2 v( ~3 E. o9 }# I" J! @& @& f: u* q$ _
    請問哪一個mdd會有windows保留字的內容?可以介紹一個嗎?7 N  i% ]# h- @; |
    我想要測試一下。

    该用户从未签到

     楼主| 发表于 2016-6-28 22:53:39 | 显示全部楼层
    本帖最后由 idict 于 2016-6-29 03:39 编辑
    # {; L3 ]; ~' N0 E$ S1 G" z4 J, T
    asicsfree 发表于 2016-6-28 22:08( K  {9 Q. p, M: l! R! c
    請問哪一個mdd會有windows保留字的內容?可以介紹一個嗎?謝謝。

    + m- \: N6 L* J' M6 y! D" Y$ f1 r3 w% h! K+ y# C* p, M5 V
    不客气. 目前刚巧偶遇一个:
    3 z4 G: O: D0 Y/ V! L, t( f1 @2 M- t是Amazon的OALD9简约风格.6 q) m& U7 E- v* F/ ~( i( k2 q
    https://www.pdawiki.com/forum/fo ... hread&tid=16587
    1 t4 C  y$ x! E8 }2 K! y$ d' {! d* j$ p: w) Q! ?7 @
    一并感谢Amazon, keenper的大作.
    & u' ]4 U. m4 X- M; i- E

    该用户从未签到

    发表于 2016-6-28 23:40:49 | 显示全部楼层
    idict 发表于 2016-6-28 22:53- B  ^  h0 s) J6 D
    不客气. 目前刚巧偶遇一个:3 ], C6 _% T. W+ Y/ Y$ m
    是Amazon的OALD9简约风格.
    & a' i7 ^* A' b2 B5 xhttps://www.pdawiki.com/forum/forum.php?mod=vi ...
    + r7 d# p6 ?8 v/ L, z0 d
    感激,快來試試。

    该用户从未签到

    发表于 2016-6-28 23:45:12 | 显示全部楼层
    asicsfree 发表于 2016-6-28 22:08( s: v0 w; U& x
    請問哪一個mdd會有windows保留字的內容?可以介紹一個嗎?8 J+ ?  w+ C. z/ z7 d
    我想要測試一下。
    # P8 G: ?& }2 ^* v; g/ i
    Windows 有一個保留字:aux4 n8 e! |  Z( J5 c, M, H$ s
    這個讓不少詞典的中招了,因為是一個常用縮寫。

    该用户从未签到

    发表于 2016-6-29 02:24:27 | 显示全部楼层
    PurlingNayuki 发表于 2016-6-28 23:457 L5 K: |: z( C+ X4 H" {
    Windows 有一個保留字:aux
    ( V: B5 \( r5 n1 f這個讓不少詞典的中招了,因為是一個常用縮寫。
    : p2 J/ T' ~0 N- a! M. {* m
    可以介紹是哪一個mdd嗎?謝謝

    该用户从未签到

    发表于 2016-6-29 02:47:38 | 显示全部楼层
    asicsfree 发表于 2016-6-29 02:24; o( {( F2 l$ `
    可以介紹是哪一個mdd嗎?謝謝

    5 C0 c! y& J. `/ V5 ~抱歉,具體不是很清楚了。首先很少打包及解包,其次我通常使用 Python 實現的 readmdict 在 OS X 下工作。, v- a, p0 D$ N1 Z& G
    不過如果真的想玩的話,大可以自行制作一個嘛。
  • TA的每日心情
    慵懒
    2018-10-24 13:08
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2017-5-12 10:04:52 | 显示全部楼层
    好难的样子啊
  • TA的每日心情
    擦汗
    前天 21:57
  • 签到天数: 552 天

    [LV.9]以坛为家II

    发表于 2020-11-10 17:39:29 | 显示全部楼层
    感谢楼主,非常有用
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-5 02:16 , Processed in 0.024484 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表