查看: 1208|回复: 18
打印 上一主题 下一主题

[求助] 求教大神: PYGLOSSARY 的使用问题

[复制链接]
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    跳转到指定楼层
    1
    发表于 2021-8-24 12:05:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    各位大神好! 我在尝试使用PYGLOSSARY 制作mac词典出现了问题?

    我的环境
    1. macOS Big Sur  11.5.2
    2. python  3.9.6
    复制代码



    目前成功安装

    1. beautifulsoup 4 4.9.3
    2. html5lib       1.1
    3. lxml           4.6.3
    4. python-lzo     1.12
    复制代码




    Command Line Tools for Xcode 12.5.1  安装成功
    Auxiliary Tools 内 Dictionary Development Kit 我复制到 /Applications/Utilities



    pyglossary 我下载的最新版 4.1.0rc2  ,解压到 /Users/liliane/Software



    然后执行命令
    1. cd ~/Downloads/OALD4
    2. python ~/Software/pyglossary/pyglossary.pyw --read-options=resPath=OtherResources --write-format=AppleDict OALD4_Ex.mdx OALD4_Ex.xml
    复制代码




    给出报错
    1. [ERROR] Invalid option name resPath for format OctopusMdict
    复制代码





    运行
    1. python ~/Software/pyglossary/pyglossary.pyw --help
    复制代码


    1. PyGlossary is a tool for working with dictionary databases (glossaries)
    2. Basic Usage:
    3.     PyGI (Gtk3) Interface:
    4.         To open PyGlossary window:
    5.             pyglossary
    6.         PyGI is the default interface (so you never need to use "--ui=gtk" or --gtk option)
    7.         If PyGI was not found (not installed), then PyGlossary will fallback to Tkinter interface.
    8.     Tkinter Interface:
    9.         To open PyGlossary window:
    10.             pyglossary --tk
    11.         Or
    12.             pyglossary --ui=tk
    13.         Usually good for Windows and Mac OS X
    14.     Command-line interface:
    15.         To show this help:
    16.             pyglossary --help
    17.         To show program version:
    18.             pyglossary --version
    19.         To Convert:
    20.             pyglossary INPUT_FILE OUTPUT_FILE
    21.         To Reverse:
    22.             pyglossary INPUT_FILE OUTPUT_FILE.txt --reverse
    23.         Input and output formats will be detected from extensions if possible.
    24.         If not, you need to specify input or output format, for example:
    25.             pyglossary test.utf8 test.ifo --read-format=tabfile
    26.             pyglossary test.utf8 test.ifo --read-format tabfile
    27.             pyglossary test.ifo test.utf8 --write-format=tabfile
    28.             pyglossary test.ifo test.utf8 --write-format tabfile

    29.     Interactive command-line interface:
    30.         Minimal command:
    31.             pyglossary --cmd
    32.         Or
    33.             pyglossary --ui=cmd
    34.         Additionally you can pass any flag to act to act as default


    35. General Options:
    36.     Verbosity:
    37.         -v0 or '--verbosity 0' for critical errors only
    38.         -v1 or '--verbosity 1' for errors only
    39.         -v2 or '--verbosity 2' for errors and warnings
    40.         -v3 or '--verbosity 3' for errors, warnings and info
    41.         -v4 or '--verbosity 4' for debug mode
    42.         -v5 or '--verbosity 5' for trace mode
    43.     Appearance:
    44.         --no-progress-bar and --no-color, useful for scripts

    45. Full Convert Usage:
    46.     pyglossary INPUT_FILE OUTPUT_FILE [-vN] [--read-format=FORMAT] [--write-format=FORMAT]
    47.         [--sort|--no-sort] [--direct|--indirect] [--no-alts] [--sort-cache-size=2000] [--utf8-check|--no-utf8-check]
    48.         [--lower|--no-lower] [--read-options=READ_OPTIONS] [--write-options=WRITE_OPTIONS]


    49. Command line arguments and options (and arguments for options) is parsed with GNU getopt method
    50. You can also just type extension of output file instead of full path, if you want to create with the same input
    51. file name with another extension. For example:
    52.     pyglossary mydic.ifo txt
    53. instead of:
    54.     pyglossary mydic.ifo mydic.txt
    55. Compressing with gz, bz2 and zip is supported, just append these extension to the file name, for example:
    56.     pyglossary mydic.ifo mydic.txt.gz
    57. or
    58.     pyglossary mydic.ifo txt.gz
    59. And if the input file has these extensions (gz, bz2, zip), it will be extracted before loading
    复制代码





    Applications/Utilities/Dictionary Development Kit  下面
    1. bin
    2. documents
    3. project_templates
    4. samples
    复制代码



    至今不知道问题出现在哪里? 麻烦各位了




  • TA的每日心情
    开心
    前天 19:50
  • 签到天数: 136 天

    [LV.7]常住居民III

    9

    主题

    657

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    19214
    2
    发表于 2021-8-24 13:10:56 | 只看该作者
    python3 pyglossary.pyw -u cmd 模式下试试
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    3
     楼主| 发表于 2021-8-24 13:26:10 | 只看该作者
    本帖最后由 漫步云海涧 于 2021-8-24 13:28 编辑
    ryuka 发表于 2021-8-24 13:10
    python3 pyglossary.pyw -u cmd 模式下试试


    我的python 做了符号链接, python 默认版本是 python 3.9.6


    1. cd ~/Downloads/OALD4
    2. python3 ~/Software/pyglossary/pyglossary.pyw -u cmd
    复制代码


    给我返回的信息:
    1. [CRITICAL] Traceback (most recent call last):
    2.   File "/Users/liliane/Software/pyglossary/pyglossary.pyw", line 10, in <module>
    3.     main()
    4.   File "/Users/liliane/Software/pyglossary/pyglossary/ui/main.py", line 562, in main
    5.     from pyglossary.ui.ui_cmd_interactive import UI
    6.   File "/Users/liliane/Software/pyglossary/pyglossary/ui/ui_cmd_interactive.py", line 44, in <module>
    7.     from prompt_toolkit import prompt as promptLow
    8. ModuleNotFoundError: No module named 'prompt_toolkit'
    复制代码

  • TA的每日心情
    开心
    前天 19:50
  • 签到天数: 136 天

    [LV.7]常住居民III

    9

    主题

    657

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    19214
    4
    发表于 2021-8-24 13:30:31 | 只看该作者
    漫步云海涧 发表于 2021-8-24 13:26
    我的python 做了符号链接, python 默认版本是 python 3.9.6

    pip3 install prompt_toolkit
  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    141

    回帖

    4080

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4080

    QQ 章

    5
    发表于 2021-8-24 13:30:40 | 只看该作者
    本帖最后由 zhangchaont 于 2021-8-24 13:35 编辑

    要先安装这些依赖包:
    brew install python3 pygobject3 gtk+3

    ---

    我当时用的是brew install pyglossary
    然后运行pyglossary --gtk
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    6
     楼主| 发表于 2021-8-24 13:55:14 | 只看该作者
    zhangchaont 发表于 2021-8-24 13:30
    要先安装这些依赖包:
    brew install python3 pygobject3 gtk+3

    python 3 我已经安装了, 所以就执行了

    brew install pygobject3 gtk+3  
    pip3 install prompt_toolkit
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    7
     楼主| 发表于 2021-8-24 13:58:41 | 只看该作者
    ryuka 发表于 2021-8-24 13:10
    python3 pyglossary.pyw -u cmd 模式下试试
    1. python3 ~/Software/pyglossary/pyglossary.pyw -u cmd
    2. > Input file:
    复制代码


    " > Input file: " 相当于命令行么?  是在这里输入  python ~/Software/pyglossary/pyglossary.pyw --read-options=resPath=OtherResources --write-format=AppleDict OALD4_Ex.mdx OALD4_Ex.xml   吗?
  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    141

    回帖

    4080

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4080

    QQ 章

    8
    发表于 2021-8-24 13:59:45 | 只看该作者
    漫步云海涧 发表于 2021-8-24 13:55
    python 3 我已经安装了, 所以就执行了

    brew install pygobject3 gtk+3  

    我上面写错了,是用pip3安装pyglossary.
    pip3 install pyglossary
  • TA的每日心情
    开心
    前天 19:50
  • 签到天数: 136 天

    [LV.7]常住居民III

    9

    主题

    657

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    19214
    9
    发表于 2021-8-24 14:02:18 | 只看该作者
    漫步云海涧 发表于 2021-8-24 13:58
    " > Input file: " 相当于命令行么?  是在这里输入  python ~/Software/pyglossary/pyglossary.pyw -- ...

    源文件路径,如/Volumes/HIKVISION/词典/英语/学习词典/Longman Dictionary Of Contemporary English 6th EnEn/LongmanDictionaryOfContemporaryEnglish6thEnEn.mdx
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    10
     楼主| 发表于 2021-8-24 14:07:06 | 只看该作者
    zhangchaont 发表于 2021-8-24 13:59
    我上面写错了,是用pip3安装pyglossary.
    pip3 install pyglossary

    pyglossary 我是下载下来,解压缩到 ~/Software  目录下。 还需要用brew再安装 应该不需要了吧
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    11
     楼主| 发表于 2021-8-24 14:11:48 | 只看该作者
    ryuka 发表于 2021-8-24 14:02
    源文件路径,如/Volumes/HIKVISION/词典/英语/学习词典/Longman Dictionary Of Contemporary English 6th ...

    非常感谢,目前已经成功,等待转换中......
    这是我的操作

    1. ❯ python3 ~/Software/pyglossary/pyglossary.pyw -u cmd
    2. > Input file: /Users/liliane/Downloads/OALD4/OALD4_Ex.mdx
    3. > Output file: /Users/liliane/Downloads/OALD4/OALD4_Ex.xml
    4. > Output format: AppleDict
    5. > Select action (ENTER to convert):
    复制代码


  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    12
     楼主| 发表于 2021-8-24 14:14:56 | 只看该作者
    本帖最后由 漫步云海涧 于 2021-8-24 14:39 编辑

    目前转换成功 ,谢谢各位大神的帮助

    1. > Select action (ENTER to convert):
    2. [INFO] Found 1 mdd files with 433 entries
    3. [INFO] extracting links...
    4. [INFO] extracting links done, sizeof(linksDict)=1310808
    5. [INFO] wordCount = 51208
    6. [INFO] Failed to detect sourceLang and targetLang from glossary name '牛津高阶双解(第四版)'

    7. [INFO] Writing to AppleDict file '/Users/liliane/Downloads/OALD4/OALD4_Ex.xml'
    8. [INFO] Using Reader class from OctopusMdict plugin for direct conversion without loading into memory
    9. Converting | |█████████████████████████████████████████████|%100.0 Time: 0:02:56

    10. [INFO] Writing file '/Users/liliane/Downloads/OALD4/OALD4_Ex.xml' done.
    11. [INFO] Running time of convert: 180.8 seconds

    12. If you want to repeat this conversion later, you can use this command:
    13. pyglossary /Users/liliane/Downloads/OALD4/OALD4_Ex.mdx /Users/liliane/Downloads/OALD4/OALD4_Ex.xml --read-format=OctopusMdict --write-format=AppleDict
    复制代码



  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    13
     楼主| 发表于 2021-8-27 16:44:10 | 只看该作者
    昨天系统出现问题,重新安装了转换词典的环境 又出现报错了

    1. python3 ~/Software/pyglossary/pyglossary.pyw -u cmd
    2. > Input file: /Users/vivian/Downloads/concise/concise_enhanced.mdx
    3. > Output file: /Users/vivian/Downloads/concise/concise
    4. > Output format: AppleDict
    5. > Select action (ENTER to convert):
    复制代码


    输出报错
    1. Try Brutal Force on Encrypted Key Blocks
    2. unhandled exception:
    3. Traceback (most recent call last):
    4.   File "/Users/vivian/Software/pyglossary/pyglossary/plugin_lib/readmdict.py", line 104, in __init__
    5.     self._key_list = self._read_keys()
    6.   File "/Users/vivian/Software/pyglossary/pyglossary/plugin_lib/readmdict.py", line 362, in _read_keys
    7.     key_block_info_list = self._decode_key_block_info(key_block_info)
    8.   File "/Users/vivian/Software/pyglossary/pyglossary/plugin_lib/readmdict.py", line 148, in _decode_key_block_info
    9.     assert(key_block_info_compressed[:4] == b'\x02\x00\x00\x00')
    10. AssertionError

    11. During handling of the above exception, another exception occurred:

    12. Traceback (most recent call last):
    13.   File "/Users/vivian/Software/pyglossary/pyglossary/glossary.py", line 854, in read
    14.     reader.open(filename)
    15.   File "/Users/vivian/Software/pyglossary/pyglossary/plugins/octopus_mdict_new/__init__.py", line 71, in open
    16.     self._mdx = MDX(filename, self._encoding, self._substyle)
    17.   File "/Users/vivian/Software/pyglossary/pyglossary/plugin_lib/readmdict.py", line 516, in __init__
    18.     MDict.__init__(self, fname, encoding, passcode)
    19.   File "/Users/vivian/Software/pyglossary/pyglossary/plugin_lib/readmdict.py", line 107, in __init__
    20.     self._key_list = self._read_keys_brutal()
    21.   File "/Users/vivian/Software/pyglossary/pyglossary/plugin_lib/readmdict.py", line 394, in _read_keys_brutal
    22.     assert key_block_info[:4] == b'\x02\x00\x00\x00'
    23. AssertionError


    24. If you want to repeat this conversion later, you can use this command:
    25. pyglossary /Users/vivian/Downloads/concise/concise_enhanced.mdx /Users/vivian/Downloads/concise/concise --read-format=OctopusMdict --write-format=AppleDict
    26. Press Control + C to exit
    27. > Select action (ENTER to convert):
    复制代码



    1. ❯ pip3 list
    2. Package        Version
    3. -------------- -------
    4. beautifulsoup4 4.9.3
    5. html5lib       1.1
    6. lxml           4.6.3
    7. pip            21.2.4
    8. prompt-toolkit 3.0.20
    9. pycairo        1.20.1
    10. PyGObject      3.40.1
    11. python-lzo     1.12
    12. setuptools     57.0.0
    13. six            1.16.0
    14. soupsieve      2.2.1
    15. wcwidth        0.2.5
    16. webencodings   0.5.1
    17. wheel          0.36.2
    复制代码



    pygobject3  gtk+3 也安装了, 请问各位大神这是什么原因?
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    14
     楼主| 发表于 2021-8-27 16:46:36 | 只看该作者
    ryuka 发表于 2021-8-24 14:02
    源文件路径,如/Volumes/HIKVISION/词典/英语/学习词典/Longman Dictionary Of Contemporary English 6th ...

    还请大神帮个忙 看一下报错信息,麻烦了
  • TA的每日心情
    开心
    前天 19:50
  • 签到天数: 136 天

    [LV.7]常住居民III

    9

    主题

    657

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    19214
    15
    发表于 2021-8-28 07:38:27 | 只看该作者
    换个mdx试试呢
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    16
     楼主| 发表于 2021-8-28 08:15:03 | 只看该作者


    我换了mdx 没有问题可以转成功, 不过中间有部分信息缺失了

    1. [INFO] Failed to detect sourceLang and targetLang from glossary name 'Shorter_Oxford_English_Dictionary_6th.mdx'
    复制代码


    我转换失败的这部词典是简明增强版,里面只有 mdx 、 css  没有mdd文件

    是否失败跟这个有关系呢?
  • TA的每日心情
    开心
    前天 19:50
  • 签到天数: 136 天

    [LV.7]常住居民III

    9

    主题

    657

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    19214
    17
    发表于 2021-8-28 08:33:42 | 只看该作者
    我记得那个词典是mdx builder4.0打包的,无法解压
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    18
     楼主| 发表于 2021-8-28 09:09:41 | 只看该作者
    本帖最后由 漫步云海涧 于 2021-8-28 09:10 编辑


    另外我想问一下 ,下面这条命令是哪里有问题 我该怎么写呢?

    1. python3 ~/Software/pyglossary/pyglossary.pyw --read-options=resPath=OtherResources --write-format=AppleDict Shorter_Oxford_English_Dictionary_6th.mdx SOED6_Dict
    复制代码



    报错
    1. [ERROR] Invalid option name resPath for format OctopusMdict
    复制代码






    我现在一直用的是你之前说的 cmd
    1. python3 ~/Software/pyglossary/pyglossary.pyw -u cmd
    复制代码
  • TA的每日心情
    擦汗
    2021-11-17 09:18
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    269

    回帖

    2434

    积分

    解元

    Rank: 5Rank: 5

    积分
    2434

    QQ 章

    19
     楼主| 发表于 2021-8-28 09:14:39 | 只看该作者
    ryuka 发表于 2021-8-28 08:33
    我记得那个词典是mdx builder4.0打包的,无法解压

    我去原贴看一下  ,谢谢了