2015-02-06 83 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')) 
文檔管理路徑