Python脚本在bash中工作,但在通过系统

时间:2016-09-06 19:40:14

标签: python r bash shell

我使用的是Ubuntu 16.04。我试图从R运行一个简单的python脚本。脚本是

    import numpy as np
    x=1
    print(x)

并写在名为code.py的文件中。如果我通过

在bash中调用它,它工作正常
    python3.5 code.py

然而,当我通过

在R中调用它时
    system("python3.5 code.py",intern=TRUE)

我收到一条消息,说没有找到numpy。知道为什么会有这种差异以及如何解决这个问题?

谢谢!

更新

如果我使用

运行文件
     import sys 
     print(sys.path)

我得到了

     [1] "['/home/user/Desktop', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']" 

如果我从R运行文件,

    ['/home/user/Desktop', '/home/user/anaconda3/lib/python35.zip', '/home/user/anaconda3/lib/python3.5', '/home/user/anaconda3/lib/python3.5/plat-linux', '/home/user/anaconda3/lib/python3.5/lib-dynload', '/home/user/anaconda3/lib/python3.5/site-packages', '/home/user/anaconda3/lib/python3.5/site-packages/Sphinx-1.4.1-py3.5.egg', '/home/user/anaconda3/lib/python3.5/site-packages/setuptools-23.0.0-py3.5.egg']

如果我从命令行运行该文件。

1 个答案:

答案 0 :(得分:1)

问题是你的计算机上有两个版本的python3:系统默认(Ubuntu,我假设),以及你安装的那个(Anaconda3)。

当您从命令行运行它时,您正在使用Anaconda3环境(包括numpy和所有其他anaconda模块)。当你从R运行它时,它不知道使用Anaconda环境,所以它只使用你的默认python路径(不包括numpy)。

要解决这个问题,请使用Anaconda python而不是系统python在R中调用您的python脚本:

system("/home/user/anaconda3/bin/python3 code.py",intern=TRUE)

或者,您可以将/home/user/anaconda3/bin/添加到PATH中的~/.bashrc环境变量中,以便它选择系统二进制文件上的anaconda。