В сущности У меня есть эта программа:Почему моя программа Python не работает при вызове с Java?
from sympy.solvers import solve
from sympy import Symbol
x = Symbol('x')
print solve(x**2 - 1, x)
И я называю это от Java, используя этот код:
public static BufferedReader runFile(Class<?> c, String py, List<String> args) {
String cmd = c.getResource(py).getPath();
cmd=cmd.split(py)[0];
cmd=cmd.substring(0,cmd.length()-1);
args.add(0, py);
args.add(0, "python");
final ProcessBuilder pb = new ProcessBuilder(args);
new ProcessBuilder();
pb.directory(new File(cmd));
pb.redirectError();
try {
System.out.println(pb.directory().getPath());
for(String s:pb.command()){
System.out.println(s);
}
Process p=pb.start();
return new BufferedReader(new InputStreamReader(p.getErrorStream()));
}
catch (final IOException e) {
throw new RuntimeException(e);
}
}
При запуске программы на Python от терминала все работает, как задумано, ни с чем в поток ошибок, и он печатает [-1,1]. Но если я запускаю его из программы, я получаю это в потоке ошибок:
Traceback (most recent call last):
File "solve.py", line 1, in <module>
from sympy.solvers import solve
ImportError: No module named sympy.solvers
Вы используете virtualenv или что-то в этом роде? – jpmc26
@ jpmc26 не уверен, что это такое, но нет. Я использую raw java 7 и python 2.7. Наряду с симпатией. – Others
Вы установили sympy по всему миру? Как, если так? – jpmc26