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

configure.pyをwindowsに対応 exampleをctypes化 #80

Merged
merged 38 commits into from
Feb 20, 2022

Conversation

Oyaki122
Copy link
Member

@Oyaki122 Oyaki122 commented Feb 19, 2022

内容

configure.pyをwindowsに対応します
その際、.libファイルを.dllファイルから生成するために、PATHを通さない限りVS開発者コンソールでしか開けないdumpbinを使用する必要があったため、configure.pyのみで完結することができませんでした。
これを解決するため .libを必要としているcythonを排除し、ctypesを用いた実装に変更しました

configure.pyのwindows対応に合わせてREADMEを大幅に改稿しましたが、問題があるようであれば元に戻します

その他

Windows x64, WSL2でのみ動作検証しているので、動作検証にご協力いただければ幸いです

このPRがマージされ次第、DirectML版をPRする予定です

@Oyaki122 Oyaki122 marked this pull request as ready for review February 19, 2022 19:32
@VOICEVOX VOICEVOX locked and limited conversation to collaborators Feb 19, 2022
@VOICEVOX VOICEVOX unlocked this conversation Feb 19, 2022
@Oyaki122 Oyaki122 marked this pull request as draft February 19, 2022 20:59
@Oyaki122 Oyaki122 marked this pull request as ready for review February 20, 2022 05:01
@Hiroshiba Hiroshiba requested a review from Yosshi999 February 20, 2022 08:19
@Hiroshiba
Copy link
Member

PRありがとうございます!

結構な変更量ですね・・・!
たぶんengineとほぼ同じ実装で、メンテナンスするのが大変になりそうです。
なので、exampleだし動けば良いかなーくらいのメンテナンスで良さそうに感じました。

@Yosshi999 さん、一緒にレビューお願いします 🙏

Copy link
Contributor

@Yosshi999 Yosshi999 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

いくつかコメントと質問を付けました。
特にpython 3.7系での動作について他の方の結果を聞きたいです

configure.py Outdated Show resolved Hide resolved
configure.py Show resolved Hide resolved
core/CMakeLists.txt Outdated Show resolved Hide resolved
core_dll_path = Path(os.path.dirname(__file__) + f"/lib/{lib_file}")
if not os.path.exists(core_dll_path):
raise Exception(f"coreライブラリファイルが{core_dll_path}に存在しません")
lib = cdll.LoadLibrary(str(core_dll_path))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[QUESTION]
この件は他の方(@Hiroshiba etc.)にも試してほしいんですが、Python 3.7.11ではここで

OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。

と表示されてdllをロードできませんでした。何か心当たりはありますか?
ちなみに3.8.12では動きました。

どうも3.8でwindowsのdllロードがいろいろ変わったっぽいんですがそれが原因かもしれません。
3.7対応を切るか、何らかのトリックを加える必要がありそう。
https://docs.python.org/ja/3/library/os.html#os.add_dll_directory
https://docs.python.org/ja/3/library/ctypes.html#ctypes.WinDLL

Copy link
Member Author

@Oyaki122 Oyaki122 Feb 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

レビューしていただき大変ありがとうございます
こちらでも、エラーの種類はアクセス不可領域へのアクセスのようで異なるものの、エラーを確認しました

以前の__init__.pyにあったdll読み込みのコードを用いることでこちらでは解決できましたが、そちらではどうでしょうか?

Copy link
Contributor

@Yosshi999 Yosshi999 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3.7でも動作しました!これで大丈夫そうです 👍

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

実際にGithub Actionsでこのコードを実行するテストを回すのも面白いかもと思いました。

@Hiroshiba Hiroshiba merged commit 28b114e into VOICEVOX:main Feb 20, 2022
@Oyaki122 Oyaki122 deleted the windows_config branch February 20, 2022 16:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants