找不到具有imp的内部模块

2024-06-16 10:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图运行algolia fork of the mongo_connector时,在选择algolia文档管理器作为内部模块时遇到了一个问题。在我看来,其他所有人都依赖于添加doc manager作为外部源,尽管实际上不应该有必要。在

为了安装,我创建了这个requirement.txt

algoliasearch==1.5.0
elasticsearch==0.4.5
pymongo==2.8
pysolr==3.3.0
requests==2.5.1
urllib3==1.10
wsgiref==0.1.2
git+https://github.com/algolia/mongo-connector.git

并安装了sudo pip install -r requirements.txt。在

然后运行它:

^{pr2}$

给我:

 Traceback (most recent call last):
   File "/usr/local/bin/mongo-connector", line 9, in <module>
     load_entry_point('mongo-connector==1.3.dev0', 'console_scripts', 'mongo-connector')()
   File "build/bdist.linux-x86_64/egg/mongo_connector/connector.py", line 720, in main
   File "build/bdist.linux-x86_64/egg/mongo_connector/connector.py", line 77, in __init__
   File "build/bdist.linux-x86_64/egg/mongo_connector/connector.py", line 64, in load_doc_manager
 IOError: [Errno 2] No such file or directory

为了修复它,我查找了失败的来源:

def load_doc_manager(path):
    name, _ = os.path.splitext(os.path.basename(path))
    try:
        from importlib.machinery import SourceFileLoader
        loader = SourceFileLoader(name, path)
        module = loader.load_module(name)
    except ImportError:
        module = imp.load_source(name, path)
    return module

既然path是{},为什么文件在那里时{}找不到它?可能是因为包是作为.egg文件安装的吗?还尝试了与其他文档管理器一起运行,结果相同。在

只有当我向doc manager提供一个绝对URL时,它才起作用。在


Tags: pathnameinbuildconnectordoceggmongo
1条回答
网友
1楼 · 发布于 2024-06-16 10:05:54

我最终以编程方式解析doc manager path,如下所示

import mongo_connector.doc_managers.algolia_doc_manager as doc_manager
import os.path as path, sys

sys.stdout.write(path.join(path.dirname(doc_manager.__file__),'algolia_doc_manager.py'))

相关问题 更多 >