为子过程设置相对Java-Class Path



我有2个安装:笔记本电脑上一个和一个slurm安装。我想在我的python函数中设置相对路径,所以我只能通过git拉并运行它。

问题:我的jar文件在
/Users/me/libs/jena/lib/*~/libs/jena/lib/*在我的笔记本电脑上,/home/user/me/libs/jena/lib/*或服务器上的~/libs/jena/lib/*中。

我知道并尝试了os.path.join(os.path.dirname(__file__),'../../libs/jena/lib/*'),也直接设置~/path/不起作用。

让我感到困惑的是,用os.path.join运行一个Shebang脚本,但是设置类似于:

的类路径
cmd = ["java", "-cp", os.path.join(os.path.dirname(__file__),'../../libs/jena/lib/*')"+":.", java_file, args]
proc = Popen(cmd, stdout=PIPE, stderr=PIPE)

不起作用。

感谢您的帮助

首先,您可以尝试在路径中删除*;它应该只是../../libs/jena/lib/

第二,您可以将CLASSPATH变量设置为笔记本电脑和群集上的.bash_profile文件中的正确值。

export CLASSPATH=~/libs/jena/lib/

这将起作用,因为当.bash_profile文件得出(登录时)时,BASH将用您的房屋代替~。这在Python脚本中不起作用,因为然后不参与BASH(只有BASH才能将~理解为用户的主目录。)

使用环境变量还可以使您在笔记本电脑和群集上具有不同的库路径。例如,如果您想尝试其中一个库的较新版本。

最新更新