質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

1024閲覧

python-javabridgeをインストール中に発生するWindows特有のエラーを解消したい

oka12

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/08/05 07:17

編集2020/08/05 12:02

前提・実現したいこと

python-bioformatsというライブラリをAnaconda Promptを使ってインストールしようとしています。
関連ライブラリのpython-javabridgeをインストール中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

ERROR: Command errored out with exit status 1: command: 'C:\Anaconda\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\ユーザー名\AppData\Local\Temp\pip-install-ome9feko\javabridge\setup.py'"'"'; __file__='"'"'C:\Users\ユーザー名\AppData\Local\Temp\pip-install-ome9feko\javabridge\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\ユーザー名\AppData\Local\Temp\pip-pip-egg-info-6mmkkocx' cwd: C:\Users\ユーザー名\AppData\Local\Temp\pip-install-ome9feko\javabridge\ Complete output (11 lines): Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\ユーザー名\AppData\Local\Temp\pip-install-ome9feko\javabridge\setup.py", line 406, in <module> ext_modules=ext_modules(), File "C:\Users\ユーザー名\AppData\Local\Temp\pip-install-ome9feko\javabridge\setup.py", line 119, in ext_modules p = subprocess.Popen(cmd) File "C:\Anaconda\lib\subprocess.py", line 800, in __init__ restore_signals, start_new_session) File "C:\Anaconda\lib\subprocess.py", line 1207, in _execute_child startupinfo) FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。 ---------------------------------------- ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

該当のソースコード

AnacondaPrompt

1(base) C:\Users\ユーザー名\Desktop\dist>pip install python-bioformats 2Processing c:\users\ユーザー名\appdata\local\pip\cache\wheels\ff\f3\4c\1f47f21f504e749b0733b3c39152cb9bc896cb4f7c3abbdf0f\python_bioformats-1.5.2-py3-none-any.whl 3Requirement already satisfied: future in c:\anaconda\lib\site-packages (from python-bioformats) (0.18.2) 4Collecting javabridge>=1.0 5 Using cached javabridge-1.0.19.tar.gz (1.3 MB) 6 7----以下、前述のエラー文-----
以下「javabridge-1.0.19.tar.gzのコード(変更箇所周辺)」 -------------------------------1か所目(3行目、shell=Trueを追加)----------------------------------- elif is_linux: def get_out(cmd): p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) o, ignore = p.communicate() if p.poll() != 0: raise Exception("Error finding javahome on linux: %s" % cmd) o = o.strip().decode('utf-8') return o ------------------------------------------------------------------------------------------------- -------------------------------2, 3か所目(9, 16行目、shell=Trueを追加)---------------------------------- if is_win: jdk_lib = os.path.join(jdk_home, "lib") if is_mingw: # # Build libjvm from jvm.dll on Windows. # This assumes that we're using mingw32 for build # # generate the jvm.def file matching to the jvm.dll cmd = ["gendef", os.path.join(jdk_home,"jre\bin\server\jvm.dll")] p = subprocess.Popen(cmd, shell=True) p.communicate() cmd = ["dlltool", "--dllname", jvm_so, "--output-lib","libjvm.a", "--input-def","jvm.def", "--kill-at"] p = subprocess.Popen(cmd, shell=True) p.communicate() library_dirs = [os.path.abspath("."), jdk_lib] else: # # Use the MSVC lib in the JDK # extra_link_args = ['/MANIFEST'] library_dirs = [jdk_lib] javabridge_sources.append("strtoull.c") libraries = ["jvm"] ------------------------------------------------------------------------ -------------------------------4か所目(4行目、shell=Trueを追加)----------------------------------- if os.path.exists(os.path.join(os.path.dirname(__file__), '.git')): import subprocess try: git_version = subprocess.Popen(['git', 'describe'], shell=True, stdout=subprocess.PIPE).communicate()[0].strip().decode('utf-8') except: pass -------------------------------------------------------------------------------------------------

試したこと

いろいろググると、エラー文10行目のp = subprocess.Popen(cmd)が原因らしいことが分かりました(windowsだと、Linuxコマンドのlsに対応していないため、Popenの第2引数にshell=Trueを書き、shellで実行する必要がある)(参考URL「https://qiita.com/_akisato/items/d97b17064df158f0dea0」)。
なので、そのようにコードを書き換えようとしました。ところが、該当のファイルが存在しません(C:\Users\聡一朗\AppData\Local\Temp\までは存在するが、以下のアドレスが存在しない)。この原因として、pip実行時に作成されようとするものの、途中でエラーが出たため作成が取り消されたと思われます。
そこで、実行時にキャッシュとして使用されているjavabridge-1.0.19.tar.gzというファイルをテキストエディタで開いてsubprocess.Popenの該当する引数を全て変更してみました(該当のソースコードに記載)。それで実行しても同じエラーが出ます…

補足情報(FW/ツールのバージョンなど)

OS:Windows10 home

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問