こんにちは、
私は Python を呼び出す JMP アドインを持っています (JMP 18.2.2 を使用しているため、JMP に統合されています)。Python パッケージをインストールする必要があります (まだインストールされていない場合)。
そこで私は2つの質問があります。
- インターネットに接続できないため、pip install や jmp.utils を使ってPythonパッケージをインストールできません。JMPのアドインにPythonパッケージをハードコードしてインストールするにはどうすればよいですか?
- すでにインストールされているかどうかを確認し、インストールされている場合は再インストールを回避することはできますか?
現在、私は次のことを行っています:
strPathPythonLibs = "C:\Users\Utilisateur\Documents\Sophie\JMP Addin\Python libs";
Python send(strPathPythonLibs);
Python submit( "
import sys, subprocess
subprocess.check_call([
sys.executable, '-m', 'pip', 'install',
'--no-index',
f'--find-links={strPathPythonLibs}',
'numpy', 'pandas', 'scipy'
])
" );
この問題を解決する方法をご存知ですか?sys.executableはJMPのpython.exeのパスを返すはずですが、なぜかjmp.exeのパスが返ってしまいます。JMPが使用するpython.exeはどこにありますか?
こんにちは!
はい、sys.executable は、実際には同じディレクトリにある Python 実行ファイル(jmp_python.exe)ではなく、jmp.exe のパスを返します。ただし、pip を実行する前にいくつかの環境変数を設定する必要があるため、これを直接使用するのは困難です。
JMPにjpip.batファイルを生成させるようにすれば、JMP-Pythonのpipモジュールが正しく動作するために必要なすべての環境変数を設定できます。
Python Create JPIP CMD();
jpip.bat ファイルを生成した後 (当然ながら、1 回だけ実行する必要があります)、次のように JSL スクリプトで追加の引数を指定して使用できます。
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!"", "install", "--no-index", "--find-links=\!"path/to/the/wheels\!"", "numpy", "pandas", "scipy"}), Read Function("text"));
エスケープされた引用符に注意してください。パスにはスペースが含まれる場合があります。
あるいは、jpip.file を直接変更することもできます (最後から 2 行目)。
"C:\path\to\the\jmp_python.exe" -m pip install --no-index --find-links="path\to\the\wheels" numpy pandas scipy
次に、jpip.bat ファイルのみを実行する必要があります。
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!""}), Read Function("text"));