【问题标题】:FileNotFoundError: [Errno 2] No such file or directory: mallet pathFileNotFoundError:[Errno 2] 没有这样的文件或目录:槌路径
【发布时间】:2019-08-24 03:06:08
【问题描述】:

所以这段代码在我得到这个错误之前可以工作 - 请帮助:(

mallet_path = 'C:/mallet/mallet-2.0.8/bin/mallet.bat'

ldamallet_test = gensim.models.wrappers.LdaMallet(mallet_path, corpus=bow_corpus_test, num_topics=20, id2word=dictionary_test)

【问题讨论】:

    标签: python windows file path mallet


    【解决方案1】:

    这是因为您的 Mallet 主目录设置不正确。即使您将二进制集的路径作为变量,您仍然必须定义包含 Mallet 所在源的环境变量:

    import os
    from gensim.models.wrappers import LdaMallet
    
    os.environ['MALLET_HOME'] = 'C:\\mallet\\mallet-2.0.8'
    
    mallet_path = 'C:\\mallet\\mallet-2.0.8\\bin\\mallet'
    ldamallet_test = gensim.models.wrappers.LdaMallet(mallet_path, corpus=bow_corpus_test, num_topics=20, id2word=dictionary_test)
    

    请注意,您不需要添加 .bat 扩展名,因为 Windows 应该本机执行它,因为它知道这是一个批处理文件。最后一点,您应该使用双反斜杠 (\\) 作为 Windows 中的路径分隔符。根据您使用的 Windows 版本不执行此操作可能会出现意外行为。如果您想避免头疼,请尝试使用os.path.join,它将为您提供正确的路径分隔符,无论操作系统如何:

    mallet_path = os.path.join('C:', 'mallet', 'mallet-2.0.8', 'bin', 'mallet')
    

    【讨论】:

    • 在通过 CMD shell 执行时可以假定“.bat”文件扩展名(例如,使用 subprocess.Popenshell=True),因为它位于 PATHEXT 环境变量中。否则无法假设。这是一种外壳行为,不适用于 Windows。 CreateProcessW 支持通过ComSpec shell 直接执行批处理脚本,但必须包含“.bat”或“.cmd”扩展名。否则,它只假定“.exe”作为文件扩展名,并尝试将它找到的任何文件作为二进制图像执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2019-11-03
    • 2021-08-24
    • 2021-03-07
    • 2015-06-09
    • 2021-04-01
    • 2021-10-15
    相关资源
    最近更新 更多