私は現在、この特定のGithubプロジェクトをMacOSで実行しようとしています。Python 2を実行しているシステム用にコーディングされていることは間違いありません。ただし、Python3を実行しているため、プログラムにいくつかの変更を加える必要があります。以下のものを除いて、これらの変更のほとんどはシームレスに機能します。
このコマンドでプログラムを実行すると...
python3 separate_dsd.py -i ./../../Ricotti\ \&\ Alburquerque\ -\ Dont\ You\ Believe\ Me.mp3 -o ./ -m ./../../model1.pkl
...エラーが発生しますNameError: name 'file' is not defined
。ファイルはio.open
Python3内で置き換えられました。ただし、関数呼び出しをに置き換えるだけでio.open
はエラーが発生します。
f=file(filename,'rb')
コードブロックの特定の行は次のとおりです。
def load_model(filename):
f=file(filename,'rb')
params=pickle.load(f)
f.close()
return params
これはファイルにあります/DeepConvSep/examples/dsd100/separate_dsd.py
。今どのように私はの正確な動作を置き換えるに行くかfile(filename,'rb')
とio.open
?
現在、@ abarnertの提案に従おうとし、コードを次のように変更しました。
def load_model(filename):
with open(filename, 'rb') as f:
return pickle.load(f)
しかし、それでもエラーが発生します。
Traceback (most recent call last):
File "separate_dsd.py", line 336, in <module>
main(sys.argv[1:])
File "separate_dsd.py", line 333, in main
train_auto(inputfile,outdir,model,0.3,30,25,32,513)
File "separate_dsd.py", line 250, in train_auto
params=load_model(model)
File "separate_dsd.py", line 19, in load_model
params=pickle.load(f)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbb in position 2: ordinal not in range(128)
少なくとも2つの選択肢があるようです。
A)への呼び出しを交換file()
して、open()
内蔵された機能Pythonで3
b)非常に役立つvenv
(仮想Python環境)の使用方法を学び、Python2インタープリターのインスタンスを使用してこのプロジェクトのランタイム環境を作成します。
前者を選択した場合は、次を呼び出すときにバイナリファイルを読み取ろうとしていることを指定する必要がありますopen()
。
open(filename, 'rb')
ただし、このプロジェクトでは、Python 3インタープリターとソースコード間の非互換性のインスタンスはおそらくこれだけではないため、Python2環境を作成することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加