【发布时间】:2013-01-11 16:26:36
【问题描述】:
我有一个 scala 程序,我想使用子进程从 django 中调用它:
encode_cmd = "/usr/local/share/scala/scala-2.10.0/bin/scala -cp /home/django/code/classes conn {}".format(self.id)
output = subprocess.Popen(encode_cmd, shell = True, stdout = subprocess.PIPE).stdout.read()
此代码在 python shell 中运行良好,但是当作为正常 web 服务器进程的一部分运行时,它无法找到 scala 依赖项(例如,scala 类引用 slick 库)失败并出现 java.lang.NoClassDefFoundError。
我已经尝试将特定用户指定为 mod_wsgi 守护进程的一部分,但这没有任何区别。
【问题讨论】:
-
我没有看到您将任何 .jar 添加到类路径中。你应该像这样在你的命令中添加 jars:
-cp /home/django/code/classes:/path/to/slick.jar,否则它只包含 .class 和包含每个包的类文件的文件夹。 -
顺便说一句,尝试使用 bash 中的相同字符串,看看它说了什么。
-
这似乎可以解决问题 - 谢谢! - 但是添加多个jar文件是否有捷径,还是我必须一个一个地做?
标签: python django scala subprocess