2015-02-06 63 views
0

尝试运行algolia fork of the mongo_connector时,我已经列举了选择algolia文档管理器作为内部模块的问题。在我看来,其他人都依赖于将文档管理器添加为外部源,但实际上并不需要。找不到IMP的内部模块

要安装我创造了这个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安装它。

然后运行它:

mongo-connector -m mongodb://localhost:5001/meteor -n meteor.items -t credentials-etc:items -o items.txt -d doc_managers/algolia_doc_manager 

给我:

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 

因此,与pathdoc_managers/algolia_doc_manager为什么imp.load_source()无法找到它时,文件是t这里?是否因为该软件包被安装为.egg文件?还尝试与其他文档管理器一起运行,结果相同。

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

回答

1

我结束了编程解决像这样

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')) 
文档管理路径