The problem:
I have a pretty simple python script (Test.py
) in my "C:\Apache24\htdocs\Test\cgi-bin"
folder which contains the following code:
#!/Python/python
print("Content-type: text/html")
print()
import os
os.environ['R_HOME'] = 'C:\Program Files\R\R-3.4.1'
os.environ['R_USER'] = 'C:\Python\Lib\site-packages\rpy2'
# importing rpy2
import rpy2.robjects as robjects
# test : evaluating R code
robjects.r('''
# create a function `f`
f <- function(r, verbose=FALSE) {
if (verbose) {
cat("I am calling f().\n")
}
2 * pi * r
}
''')
r_f = robjects.r['f']
res = r_f(3)
print(res[0])
Now when executing it in a python shell it works just fine. However, calling the script from a web request (even localhost) just loads the page indefinitely.
Additional info:
I'm working on a Windows Server 2008 R2 x64 OS via RemoteDesktopConnection
My installations are as follows:
Python 3.6: "C:\Python" + rpy2 version: 2.8.6
R 3.4.1: "C:\Program Files\R\R-3.4.1"
Apache: "C:\Apache24"
The
import os
and os.environ['...
commands I have set up according to this post because I was not able to set it up with global system variables.
However I have the environment variables set (I am able to launch R in cmd.exe), but my rpy2 won't work (even in a python shell) without the above commands.
My system variables are:
Path: "...;C:\Python\Scripts\;C:\Python\;C:\Program Files\R\R-3.4.1\bin\x64"
R_HOME: "C:\Program Files\R\R-3.4.1"
R_USER: "C:\Python\Lib\site-packages\rpy2"
I know my apache server can execute python scripts as cgi (I have other python scripts which execute just fine via web request). It is really just the import rpy2.robjects command which makes the trouble
I have found this post while searching for a solution, but I don't know very much about server configuration and am not able to do something without a more detailed explanation.
Let me know if I can provide more details.
Any help would be much appreciated!