2017-03-09 38 views
1

我有2個安裝:一個在我的筆記本電腦和一個SLURM安裝。我想在我的python函數中設置相對路徑,所以我可以通過git拉動並運行它。設置子進程的相對java類路徑

問題:我的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工作正常,但設置類路徑,如:

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

不起作用。

感謝您的幫助

+1

'Popen'接受一個'env'參數,它是一個包含環境變量的dict。您可以複製'os.environ'(當前環境)並在其中添加'CLASSPATH'。 – alexpeits

回答

0

首先,你可以嘗試刪除你的路徑*;它應該很簡單../../libs/jena/lib/

其次,您可以將CLASSPATH變量設置爲筆記本電腦和羣集上的.bash_profile文件中的正確值。

export CLASSPATH=~/libs/jena/lib/ 

這樣會起作用,因爲當.bash_profile文件的時候擊將取代~與您的家庭(在登錄時),因爲猛砸,然後沒有參與這並不是一個Python腳本內工作(僅猛砸理解~作爲用戶的主目錄)。

使用環境變量還可以讓您在筆記本電腦和集羣上擁有不同的庫路徑。例如,如果你想嘗試一個庫的更新版本。

+0

我無法刪除路徑中的*號 - 它需要匹配目錄中的每個jar文件 - 但其餘的與上面的alexpeits註釋一起工作(使用os.environ) – dv3