什么';在Windows上用Python进行识字编程的最佳方法是什么?

什么';在Windows上用Python进行识字编程的最佳方法是什么?,python,windows,literate-programming,noweb,Python,Windows,Literate Programming,Noweb,我一直在使用各种各样的方法用Python进行有文化的编程。我喜欢,但我有两个主要问题:第一,很难在Windows上构建,我花了大约一半的开发时间;第二,它要求我缩进每一段代码,就像它在最终程序中一样——我在编写它时不一定知道这一点。我不想使用Leo,因为我非常喜欢Emacs 是否有一个良好的识字编程工具: 在Windows上运行 允许我设置块在使用时的缩进,而不是在编写时 仍然让我在Emacs工作 谢谢 更正:noweb确实允许我以后缩进——我看错了在上面找到的论文 默认情况下,notangl

我一直在使用各种各样的方法用Python进行有文化的编程。我喜欢,但我有两个主要问题:第一,很难在Windows上构建,我花了大约一半的开发时间;第二,它要求我缩进每一段代码,就像它在最终程序中一样——我在编写它时不一定知道这一点。我不想使用Leo,因为我非常喜欢Emacs

是否有一个良好的识字编程工具:

  • 在Windows上运行
  • 允许我设置块在使用时的缩进,而不是在编写时
  • 仍然让我在Emacs工作
  • 谢谢


    更正:
    noweb
    确实允许我以后缩进——我看错了在上面找到的论文

    默认情况下,
    notangle
    在扩展块时保留空白并保持缩进。因此,它可以与Miranda和Haskell等语言一起使用,在这些语言中缩进非常重要

    这就只剩下“在Windows上运行”的问题了。

    我这样做了:

    您可以获得任意数量的web/weave产品,这些产品将帮助您一次性构建文档和代码

    你可以很容易地写你自己的。将Python代码块从RST源代码中拉出来并将其组装起来并不是一门火箭科学。实际上,我建议您编写自己的Docutils指令,以从RST源文档组装Python代码

    通过docutils rst2html(或Sphinx)运行RST以生成最终的HTML报告


    您可以在同一个RST源代码上运行自己的实用程序来提取Python代码块并生成最终的模块。

    您可能会发现在Windows上构建更容易。它的设计目的是比标准的noweb更具可移植性。

    我已经编写了Pweave,它旨在生成动态报告并使用noweb语法。它是一个纯python脚本,因此也可以在Windows上运行。它并不能解决缩进问题,但也许你可以修改它,代码非常简单

    您可以使用组织模式和babel tangle

    这非常有效,因为您可以为源代码块提供:noweb ref

    下面是一个简单的示例:,然后将其放入文件
    noweb test.org

    #+begin_src python :exports none :noweb-ref c
    abc = "abc"
    #+end_src
    
    #+begin_src python :noweb yes :tangle noweb-test.py
    def x():
      <<c>>
      return abc
    
    print(x())
    #+end_src
    
    #+begin\u src python:exports none:noweb ref c
    abc=“abc”
    #+结束(src)
    #+begin_src python:noweb yes:tangle noweb-test.py
    def x():
    返回abc
    打印(x())
    #+结束(src)
    
    您还可以使用标题的属性来提供noweb-ref。它甚至可以自动将多个源块连接到一个noweb引用中


    :结果输出
    添加到第二个块的
    #+begin#src
    行,以查看在块中点击
    C-C-C
    时该块下的打印结果。

    另请参见我的上一个LP工具:。它不需要特殊的输入格式,支持Markdown/MultiMarkdown、reStructuredText、OpenOffice/LibreOffice、Creole、TeX/LaTeX,并且具有超轻且干净的语法-不再需要晦涩难懂的程序。

    社区中事实上的标准是IPython笔记本电脑

    Peter Norvig演示了解决旅行推销员问题的算法的极好示例:


    中列出的更多示例发现这个工具很有用:

    我认为第二点永远都不容易解决:缩进是Python语言的关键,所以我猜你永远不会解决这个问题。@jkp:事实上,当发出与可读编程文档不同的最终源代码时,解决独立性相对容易。只要你的LP语言对它将使用哪种Python语句套件强加一些理性规则。显然有人已经实现了
    Python
    等价物:。为什么这个问题结束了?在我看来,任何一个获得如此多选票的问题,40票的答案,都是在回答一个需要。重温规则?@Sherwood Botsford你一定是新来的。我正在仔细检查你的方法——它看起来很接近我想要的。我宁愿让自己适应别人的工具,也不愿自己写一个;看看web框架发生了什么!这一切看起来都很好,只是当我生成LaTeX时,有一堆nuweb标记MiKTeX和TeTeX似乎不理解;我找不到补救的办法。你能解释一下它是怎么工作的吗?我阅读了您优秀的文档,但我不确定您所说的“LATEX支持中最大的差距是完全不了解nuweb中的原始标记,以及创建pyWeb时对该标记造成的真正损害。”@JSONFROUT:不了解任何LATEX,我转换了nuweb的一些部分。由于我没有花时间去理解任何乳胶,我怀疑这是错误的。你发现我把它改错了。由于胶乳标记相对容易隔离,所以您可能需要考虑修复标记。或者直接使用nuweb(或noweb)——它们可能更好。我将使用LaTeX——解析代码简单易读。如果我提出了一个令人满意的解决方案,我会给你发一些补丁。一旦网站再次响应,我会检查它。我看了一下——它似乎比以前的版本更适合我。如果我在选择另一个工具之前意识到它是可用的,我很可能会选择它。Ipython/Jupyter笔记本适合探索,但它们确实无法与rmarkdown/Swave相比——在git中使用它们很痛苦,因为它们在XML文件中存储了大量的元数据和输出,而不需要保存历史记录(实际上,您只需要生成器,而不需要输出)。Pweave是一个更好的识字编程解决方案。@panic上校,非常感谢您指出这一点。有几个问题……有没有办法将python代码提取到单独的python中