Python 使用django下的子进程调用scala程序

Python 使用django下的子进程调用scala程序,python,django,scala,subprocess,Python,Django,Scala,Subprocess,我有一个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() 这段代码在pyth

我有一个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,例如:
-cp/home/django/code/classes:/path/to/slick.jar
,否则它只包括.class和包含每个包的类文件的文件夹

如果您有许多jar,则始终可以依赖shell扩展:
/path/to/dependencies/*.jar


另一种选择是使用SBT或Maven的插件创建shell脚本

我看不到您向类路径添加任何.jar。您应该像这样在命令中使用jar:
-cp/home/django/code/classes:/path/to/slick.jar
,否则它只包含.class和包含类文件的文件夹,如packages所示。顺便说一句,尝试从bash中使用相同的字符串,看看它说了些什么。这似乎可以做到这一点-谢谢但是有没有一个简单的方法来添加一些jar文件,或者我必须一个接一个地添加它们呢?我从来没有让*.jar工作过,但仍然发现我必须单独添加jar。然而,这并不是什么大杂务。