mieki256's diary



2018/11/07(水) [n年前の日記]

#2 [python] 手元のPCに入ってるPythonのモジュールをアップデート

ふとなんとなく、手元の環境、Windows10 x64 + Python 2.7.12 上でインストールしていたモジュールについて、アップデート作業をしてみたり。

まずは Pthon 2.7.12 を 2.7.15 にアップグレード。公式サイトから python-2.7.15.msi をダウンロードして実行。Python 2.7.12 が入ってるフォルダに上書きインストール。

本当に上書きでいいのだろうか。一旦アンインストールしてからインストールしたほうが良くないか。しかしその場合、別途インストールしていた各モジュールはどうなるのだろう。なんだか怖いので毎回上書きしちゃってるけど…コレっていいのかなあ…。

DOS窓を開いて python のバージョンを確認。
> python --version
Python 2.7.15

モジュールをアップデート。まずは更新可能なモジュールの一覧を表示。
pip list --o

一つずつアップデート。
pip install -U hoge

依存関係がよろしくないモジュールがいくつかあったような気がするけれど…問題が出てから対処しよう…。

pycairo、pygobject はアップデートできなかった。ビルドするための環境が必要らしい。prompt-toolkit も、ドキュメントには 1.x と 2.x で仕様が違うと書いてあったので、アップデートしなかった。

pygletのサウンド関係が変わってた。 :

pyglet を 1.3.2 にアップデートしたら、昔書いたスクリプトが動かなくなった。どうやらサウンド関係の仕様が変わってしまったらしい。

自分、以前はどのバージョンを使っていたのだったか…。

_mieki256's diary - pygletを1.3.0rc1にしてみたら遅くなった

どうやら 1.2.4 か 1.3.0rc1 を使っていたと思われる。

さておき、変更点をメモ。pyglet はデフォルト状態だと wavファイルしか鳴らせないので、avbin なるものを導入 *1 して、mp3 や ogg も再生できるようにしてからスクリプトを書いたのだけど。その avbin 関係が少し変わってるように見えた。
  • avbin のバージョンを調べる、pyglet.media.avbin.get_version() が見当たらない。
  • avbin が使えるかどうかを調べる pyglet.media.have_avbin を pyglet.media.have_avbin() の形で呼ばないと True , False を返してくれない。ただ、コレは以前のスクリプトで記述ミスをしていた可能性もありそう。

それと、ループ再生の仕方が変わってた。

以前は以下のような感じで呼んでたけど。
    self.sndplayer = pyglet.media.ManagedSoundPlayer()
    self.sndplayer.queue(self.bgm_src)
    self.sndplayer.eos_action = self.sndplayer.EOS_LOOP  # ループ再生を設定
    self.sndplayer.play()  # 再生開始
pyglet 1.3.2 は以下のように書いたらループ再生してくれた。
    self.loop_music = pyglet.media.SourceGroup(self.bgm_src.audio_format, None)
    self.sndplayer = pyglet.media.Player()
    self.loop_music.queue(self.bgm_src)
    self.loop_music.loop = True               # ループ再生を設定
    self.sndplayer.queue(self.loop_music)
    self.sndplayer.play()  # 再生開始

pyglet.media.ManagedSoundPlayer は無くなって、「pyglet.media.Player を使え」という仕様になったようで。

_pyglet.media - pyglet v1.2.4

また、EOS_LOOP は無くなって、「SourceGroup.loop を使え」という仕様になった模様。

_Player Class - pyglet v1.2.4
_python - Haven't changed my code but it stopped working: `object has no attribute 'EOS_LOOP'` - Stack Overflow

ゲーム関係のライブラリやツールって、バージョンによって仕様がコロコロ変わるところがあるからなんだかアレだなと。Unity もそうだったし…。まあ、ゲームが完成したらそこでプロジェクト終了、みたいな昔風のノリがちょっと残っているのだろう…。

*1: Windowsの場合、avbin.dll をスクリプトと同じ場所に置く。

以上です。

過去ログ表示

Prev - 2018/11 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project