-
Notifications
You must be signed in to change notification settings - Fork 120
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
Conversation
PRありがとうございます! 結構な変更量ですね・・・! @Yosshi999 さん、一緒にレビューお願いします 🙏 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
いくつかコメントと質問を付けました。
特にpython 3.7系での動作について他の方の結果を聞きたいです
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)) |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
レビューしていただき大変ありがとうございます
こちらでも、エラーの種類はアクセス不可領域へのアクセスのようで異なるものの、エラーを確認しました
以前の__init__.pyにあったdll読み込みのコードを用いることでこちらでは解決できましたが、そちらではどうでしょうか?
Co-authored-by: Yosshi999 <[email protected]>
…_core into windows_config
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
3.7でも動作しました!これで大丈夫そうです 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!
実際にGithub Actionsでこのコードを実行するテストを回すのも面白いかもと思いました。
内容
configure.pyをwindowsに対応します
その際、.libファイルを.dllファイルから生成するために、PATHを通さない限りVS開発者コンソールでしか開けないdumpbinを使用する必要があったため、configure.pyのみで完結することができませんでした。
これを解決するため .libを必要としているcythonを排除し、ctypesを用いた実装に変更しました
configure.pyのwindows対応に合わせてREADMEを大幅に改稿しましたが、問題があるようであれば元に戻します
その他
Windows x64, WSL2でのみ動作検証しているので、動作検証にご協力いただければ幸いです
このPRがマージされ次第、DirectML版をPRする予定です