发布Pelican博客

时间:2015-05-28 14:14:52

标签: python github pelican

我正在关注Pelican文档中的Tip #2以在GitHub页面上使用自定义域。为了使其正常工作,CNAME文件必须位于我的网站的根目录。

来自doc:

  

要将自定义域与GitHub页面一起使用,您需要将站点的域放在站点根目录下的CNAME文件中。为此,请创建content/extra/目录并向其添加CNAME文件。然后使用STATIC_PATHS设置告诉Pelican将此文件复制到输出目录。例如:

STATIC_PATHS = ['images', 'extra/CNAME']
EXTRA_PATH_METADATA = {'extra/CNAME': {'path': 'CNAME'},}

我做到了这一点。我的pelicanconf.py有以下两种设置:

STATIC_PATHS = ['images', 'extra/CNAME']
EXTRA_PATH_METADATA = {'extra/CNAME': {'path': 'CNAME'},}

我已创建了CNAME文件并将其放在content/extra/CNAME中,如文档中所述。

我发布了这样的应用程序:

pelican content --output output --settings pelicanconf.py

这会在output目录中生成我的网站。页面都已正确设置。但是,CNAME不在根。相反,它位于extra/CNAME位置。

发布时我没有收到任何错误或警告。如果我使用--debug参数发布,则此行显示在输出中:

-> Copying H:\mysite\content\extra\CNAME to extra/CNAME

这清楚地表明它将其复制到extra而不是根目录。根据文档,我已正确设置STATIC_PATHSEXTRA_PATH_METADATA以将其复制到根目录。如何更改设置以便将CNAME复制到正确的位置而不是extra目录?

2 个答案:

答案 0 :(得分:2)

maggick在评论中的评估是正确的。

  

这可能是与Windows相关的问题吗?

basic settings overview

中有一点提及
  

由相对路径键入的额外元数据字典。 与某些其他Pelican文件设置不同,相对路径需要正确的特定于操作系统的目录分隔符(即在UNIX中和/在Windows中)。请参阅路径元数据。

(重点是我的)

Path metadata文档或tips中没有提到这些信息,我都在使用这两种信息。

我的解决方案,因为我在Windows上运行它,是要改变:

EXTRA_PATH_METADATA = {'extra/CNAME': {'path': 'CNAME'},}

为:

EXTRA_PATH_METADATA = {'extra\CNAME': {'path': 'CNAME'},}
                             ^ This is OS specific

注意字典键中单个更改的斜杠。

答案 1 :(得分:0)

奇怪这种行为。文档清楚地提到即使在Windows中你也需要使用正斜杠。

来自readthedocs Pelican 3.6.4 - 最新版本

STATIC_PATHS = ['images', 'extra/CNAME']
EXTRA_PATH_METADATA = {'extra/CNAME': {'path': 'CNAME'},}

注意:使用正斜杠,即使在Windows上也是如此。 但这个解决方案有效。