使用rpy2
,我想检查是否安装了给定的包。如果是,我导入它。如果没有,我先安装它。
如何检查是否已安装?
from rpy2 import *
if not *my package is installed*:
rpy2.interactive as r
r.importr("utils")
package_name = "my_package"
r.packages.utils.install_packages(package_name)
myPackage = importr("my_package")
答案 0 :(得分:6)
这是一个在Python方面做的功能
(注意应该设置为CRAN镜像的contriburl
,并且不处理安装库失败的情况。)
from rpy2.rinterface import RRuntimeError
from rpy2.robjects.packages import importr
utils = importr('utils')
def importr_tryhard(packname, contriburl):
try:
rpack = importr(packname)
except RRuntimeError:
utils.install_packages(packname, contriburl = contriburl)
rpack = importr(packname)
return rpack
答案 1 :(得分:1)
您可以使用我从@ SaschaEpskamp对another SO post的回答中获得的以下功能:
pkgTest <- function(x)
{
if (!require(x,character.only = TRUE))
{
install.packages(x,dep=TRUE)
if(!require(x,character.only = TRUE)) stop("Package not found")
}
}
然后使用它来加载你的包:
r.source("file_with_pkgTest.r")
r.pkgTest("utils")
一般来说,我建议不要尝试在Python中编写很多R代码。只需创建一些高级R函数,它们可以满足您的需求,并将它们用作R和Python之间的最小接口。
答案 2 :(得分:-1)
import sys,subprocess
your_package = 'nltk'
package_names = subprocess.Popen([pip freeze],
stdout=subprocess.PIPE).communicate()[0]
pakage = package_names.split('\n')
for package in packages:
if package ==your_package:
print 'true'