2017-03-09 7 views
1

2つのインストールがあります:1つはラップトップに、もう1つはSLURMインストールです。私はPythonの関数で相対パスを設定したいので、gitからpullして実行できます。サブプロセスの相対java-classpathを設定します

問題:私の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/ 第2に、CLASSPATH変数をラップトップとクラスタ上の.bash_profileファイルの両方で正しい値に設定することができます。

export CLASSPATH=~/libs/jena/lib/ 

.bash_profileファイルが供給されたときにbashがあなたの家で~を代用しますので、これは動作します(ログイン時に。)バッシュはその後、関与していないので、これはPythonスクリプト内で動作しませんが(のみbashはとして~を理解しますユーザーのホームディレクトリ)

環境変数を使用すると、ラップトップとクラスタ上で別個のライブラリパスを使用することもできます。たとえば、ライブラリの新しいバージョンを試したければ、

+0

パス内の*を削除できません - ディレクトリ内のすべてのjarと一致する必要がありますが、残りは上記のalexpeitsのコメントで処理されます(os.environを使用) – dv3

関連する問題