我使用的是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']
如果我从命令行运行该文件。
答案 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。