OSが書かれていませんが、Windowsですか?
そうであれば、python3に対応していない以前に、Windowsに対応していないからだと思います。
とりあえず簡単な解決法は、他のOSにするか、cygwinやWSLなどのlinuxサブシステムを使うことです。
「PyInit_<モジュール名>
」(python2であれば「init<モジュール名>
」)というのは、拡張モジュールの初期化関数です。
ソースコードにこの関数がないと、unix系のOSであればビルドができますが、インポートできません。
しかし、Windowsの場合、今回のようにビルドの時点でエラーになります。
(理由はわかるが、説明が長くなるので、省きます。)
そもそも、(unix系のOSでも)ビルドができてもインポートできなければ使い物にならないだろう、という話なのですが、ちょっと中身を見てみると、おそらく使用しているのは「src/colorcorrect/algorithm.py
」の中の、以下の部分だと思います。
python
1import os
2cutilfolder = os.path.abspath(__file__).rsplit(os.path.sep, 1)[0]
3cutilname = "_cutil"
4libcutil = np.ctypeslib.load_library(cutilname, cutilfolder)
正直numpyは知りませんので憶測になりますが、おそらくこれを見る限り、別に拡張モジュールとして使用しているわけではなく、単純に動的ライブラリとして使用しているだけかと思われます。
ですので、別の対処としては、
- 「
setup.py
」の以下のように拡張モジュールの作成は無効にして、インストールする。
python
1# Extension(
2# 'colorcorrect._cutil', [
3# 'cutil/cutil.cpp',
4# ],
5# include_dirs=['cutil'],
6# libraries=libs,
7# extra_compile_args=[],
8# ),
- 「
cutil/cutil.cpp
」は通常のDLLとして別の方法でビルドし、インストールしたディレクトリ以下に「_cutil.dll
」という名前でコピーする。
(DLLの作り方は、調べてください)
で動くかもしれません。
(最も、python3での動作保証はないのだから、他にも問題はあるかもしれませんが)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/08 15:51
2020/04/08 16:27