Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

example/python が実行できない #308

Closed
PickledChair opened this issue Oct 12, 2022 · 4 comments · Fixed by #432
Closed

example/python が実行できない #308

PickledChair opened this issue Oct 12, 2022 · 4 comments · Fixed by #432

Comments

@PickledChair
Copy link
Member

不具合の内容

example/python を README 通りに試してみても実行できません。原因は、この example が #217 (C API の変更) および #256 (共有ライブラリ名の変更) 以前のコアを想定して書かれているためです。

現象・ログ

(macOS の場合)共有ライブラリ名が libcore.dylib -> libvoicevox_core.dylib となったので共有ライブラリを見つけられない:

$ python run.py --text これはテストです --speaker_id 0
Traceback (most recent call last):
  File "/path/to/voicevox_core/example/python/run.py", line 3, in <module>
    import core
  File "/path/to/voicevox_core/example/python/core.py", line 28, in <module>
    raise Exception(f"coreライブラリファイルが{core_dll_path}に存在しません")
Exception: coreライブラリファイルが/path/to/voicevox_core/example/python/voicevox_core/libcore.dylibに存在しません

共有ライブラリ名を現行のものに変更しても、現行のコアに存在しない API (ex. voicevox_load_openjtalk_dict) を使おうとしてエラーになる:

$ python run.py --text これはテストです --speaker_id 0
Traceback (most recent call last):
  File "/path/to/voicevox_core/example/python/run.py", line 3, in <module>
    import core
  File "/path/to/voicevox_core/example/python/core.py", line 61, in <module>
    lib.voicevox_load_openjtalk_dict.argtypes = (c_char_p,)
  File "/Users/graysuitcase/.pyenv/versions/3.10.3/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/ctypes/__init__.py", line 387, in __getattr__
    func = self.__getitem__(name)
  File "/Users/graysuitcase/.pyenv/versions/3.10.3/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/ctypes/__init__.py", line 392, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: dlsym(0x2002c3500, voicevox_load_openjtalk_dict): symbol not found

再現手順

example/python を README 通りに試す

期待動作

現行のコアを用いて実行できるように修正する。
あるいは、 #217 の際のやり取り (#217 (comment), #217 (comment)) を読む限り、example/python を削除することも検討されていたようです(python の example は pyo3 版のみにする)。

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux
@Hiroshiba
Copy link
Member

issue作成ありがとうございます!!

今のexample/pythonをやめてpyo3版にするかは、実際にpyo3版を触ってみてからじゃないとなかなか判断しづらいところもあると思っています。
ので、要議論ラベルをつけてopen issueにしておくということで・・・!

@PickledChair
Copy link
Member Author

PickledChair commented Feb 2, 2023

#418 の報告で気づきましたが、README にはまだ旧 Python example への案内が載っていますね……。動作しないサンプルコードを案内し続けているのはミスリードなので、pyo3 example の整備の完了前であっても案内を削除した方が良いかもしれません(example/python そのものも削除して良いと思いますが、削除するタイミングなどで注意すべき点は何かあるでしょうか?)。

@sevenc-nanashi
Copy link
Member

何らかのFFIでコアを使うサンプルは必要だと思っています。

@Hiroshiba
Copy link
Member

もう消しちゃって良さそうに感じました!
python pipとなっている方を普通にpythonとしても良さそうですね!

@sevenc-nanashi  FFIとしての利用はC++版があるので十分かなと。
pythonはdll使うのが微妙に不自然なので、ここは素直にC++に任せるのが良いのかなと思いました!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants