I'm having a puzzling problem when trying to import a module in python only when the script is called from php via system or exec.
From the python shell:
import igraph #This works.
if the previous line was in a file, say, test_module.py, then:
python test_module.py in the bash works.
Within PHP:
exec("python test_module.py",$output,$retval) -> fails : $retval = 1.
However, if the script is instead : import math
, then this is fine.
Anybody ever dealt with something similar?
This is happening because you have installed those packages under a different user, maybe root, or something else.
How i debugged this, is i checked the output of sys.path for both cases (shell, and php's exec, which has the user www-data by default), and than i compared both.
I noticed the '/root/.local/lib/python2.7/site-packages'
path missing when i ran it from PHP, which contained exactly these missing packages.
So i just copied the content of this folder to '/usr/lib/python2.7/dist-packages/'
, which solved the issue.
one thing to check is sys.path
see what the difference is when called each way
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With