【问题标题】:How can the root directory in python chunk be specified?如何指定python块中的根目录?
【发布时间】:2019-07-20 23:43:38
【问题描述】:

使用以下代码行在 python-chunk 中设置根目录会导致错误,而对于普通的 r-chunk 则可以正常工作

knitr::opts_knit$set(root.dir ="..")
knitr::opts_knit$set(root.dir ="..")

每个 knitr-chunk 最好有以下选项: - 查找要导入/执行的代码的目录 - 查找代码执行所需的文件/依赖项的目录 - 保存任何代码输出的目录

是否存在类似的东西?

【问题讨论】:

标签: python r path knitr blogdown


【解决方案1】:

这里看起来是你告诉它是寻找python代码:

```{python}
knitr::opts_knit$set(root.dir ="..")
```

当你在 R studio 中运行它时,它会给你一个错误:

错误:语法无效(第 1 行)

您改为喂它 python 代码。这是有道理的,因为调用 knit::opt_knit$set 意味着在 knitr 包中查找 opts_knit$set 并将其设置为……。这在 python 中不存在……但是。 python 编译器无法将其识别为 python 代码并返回语法错误。而当您将它作为 R 块运行时,它知道查看 knitr 包。错误处理可能是一个需要处理的大问题。处理错误类别比考虑每种类型的错误更有意义。如果要控制代码块的设置,可以在括号中进行,即:

```{python, args }
codeHere
```

我没有看到除 R 之外的任何其他语言的 args,但这并不意味着它不存在。我只是没见过他们。我也不相信这会解决你的问题。您可以尝试以下一些想法:

  • 在一个单独的文件中编写你的 python 并链接到它。这将允许您利用该语言并利用诸如操作系统导入之类的东西。这可能是您要考虑的事情,因为即使 python 也有在各种操作系统中导航的方式。如果您只是运行快速脚本而不是加载或运行 python 程序,这可能会有所帮助。

    # OS module
    import os
    # Your os name 
    print(os.name)
    # Gets PWD or present working directory
    os.getcwd()
    # change your directory
    os.chdir("path")
    
  • 您可以尝试在 R 块中使用网状库并以这种方式加载您的 python

  • 另一个想法是你可以试试

    图书馆(网状) use_python(“路径”)

  • Knitr 在与您的降价文件相同的目录中查找其他文件(如果需要)。这就像任何其他 IDE 一样

  • 在某个时间点,knitr 不会接受 R 的 setwd() 命令。尝试调用 setwd() 可能对您没有任何好处。
  • 相对于正在执行的内容计算路径可能不是最好的主意。如果可能,应根据用户调用代码的位置来确定它们。

This site may help

knitr 包的作者非常积极和参与。祝你好运!

【讨论】:

  • 我还没有找到可以设置存储 python 文件的目录的“args”,也不应该存储可能的输出文件(例如绘图)。 (重新打开我的 pyton 文件并设置输出目录非常耗时。)这将允许更清晰地集成 python 代码输出(例如 blogdown)。如果我想在 R 代码中使用 python 代码变量,网状很好,但它不适用于所有 python 包。
猜你喜欢
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2013-08-07
  • 2023-03-20
相关资源
最近更新 更多