gpt4 book ai didi

r - 为什么 which 和 Sys.which 返回不同的路径?

转载 作者:行者123 更新时间:2023-12-01 04:44:21 25 4
gpt4 key购买 nike

我尝试从 R 运行 Python 脚本:

system('python script.py arg1 arg2')

并得到一个错误:

ImportError: No module named pandas



这有点令人惊讶,因为脚本按预期从终端运行。之前遇到过这种类型的问题(使用 knitr ,因此 engine.path 块选项),我知道要检查:
Sys.which('python')
# python
# "/usr/bin/python"

并将其与命令行进行比较:
$ which python
# /Users/michael.chirico/anaconda2/bin/python

(即,出现错误是因为我为 anaconda 发行版安装了 pandas,尽管 TBH 我不知道为什么我有不同的发行版)

因此,我可以通过运行来解决我的问题:
system('/Users/michael.chirico/anaconda2/bin/python script.py arg1 arg2')

我的问题有两个:
  • R的如何system/Sys.which寻找不同的 python比我的终端?
  • 除了每次都写出完整的二进制路径之外,我该如何解决这个问题?

  • 我读了 ?Sys.which一些提示,但无济于事。特别是 ?Sys.which建议 Sys.which正在使用 which :

    This is an interface to the system command which



    这显然是(?)不真实的;可以肯定的是,我检查了 Sys.which('which')which which确认两者都指向 /usr/bin/which (被这个花絮刺激了):

    On a Unix-alike the full path to which (usually /usr/bin/which) is found when R is installed.



    对于后者,我一时兴起尝试了 Sys.setenv(python = '/Users/michael.chirico/anaconda2/bin/python')无济于事。

    最佳答案

    正如一些评论所暗示的那样,这是一个问题,因为 PATH Finder(或 Dock)启动的程序的环境变量与终端中的环境变量不同。有设置PATH的方法用于 Dock 启动的应用程序,但它们并不漂亮。如果你想走那条路,这里有一个开始寻找的地方:

    https://apple.stackexchange.com/questions/51677/how-to-set-path-for-finder-launched-applications

    您可以做的另一件事可能更直接,就是告诉 R 设置 PATH启动时变量,使用 Sys.setenv将路径添加到所需的 Python 实例。您可以为一个项目、整个用户帐户或整个系统执行此操作,方法是将命令放在 .Rprofile 中。对应位置的文件。有关如何在此处执行此操作的更多信息:

    https://stat.ethz.ch/R-manual/R-devel/library/base/html/Startup.html

    关于r - 为什么 which 和 Sys.which 返回不同的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084679/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com