別のpythonアプリからペリカンのブログに投稿しようとしているのでpelican ./output -s settings.py
、コマンドラインからはしていません。
ペリカンを変更して、モック化されたargparseのようなオブジェクトを受け入れて必要なものを渡すようにしたので、関数の内容をに移動しましたmain
__init__.py
引数を受け入れるという名前の関数runPelican(args)
に、そしてこのように Argparse をモックした私のアプリから、
class MockArgparse(object):
"""Mock for argparse's to pass to pelican
"""
def __init__(self, verbosity=True, theme=None, output=None, path=None, delete_outputdir=None,
settings=None, ignore_cache=None, cache_path=None, selected_paths=None, autoreload=None):
"""
Args:
path (str): content path
settings(str): settings python file path
"""
super(MockArgparse, self).__init__()
self.theme = theme
self.cache_path = cache_path
self.ignore_cache = ignore_cache
self.delete_outputdir = delete_outputdir
self.settings = settings
self.output = output
self.verbosity = verbosity
self.autoreload = autoreload
self.path = path
self.selected_paths = selected_paths
次のように、Python アプリから runPelican を呼び出しています。
if make_entry(args):
import pelican
arg = MockArgparse(path=CONTENT_PATH, theme=THEME_PATH, output=OUTPUT_PATH, settings=SETTINGS_PATH)
pelican.runPelican(arg)
すべてがうまくいっているようですが、ブログの投稿は生成されず、唯一のエラーは
CRITICAL: SimplerXMLGenerator instance has no attribute '_write'
どんな助けでも大歓迎です。