■Unity開発メモ用のWiki◎現在扱っていること・Unity全般・MMDからUnityへの変換してインポート・MMDの仕様把握・BlenderでMMDモデルのカスタム

目次


用語メモ

  • モジュール:拡張子が「.py」のファイルは全てPythonモジュールとなる
  ↓
  • パッケージ:モジュールの集まったもの
  ↓
  • ライブラリ:パッケージをいくつかまとめてインストールできるようにしたもの

バッチ、バッシュ、シェル

  • バッチファイル
    • Windowsで使用する処理を記載したファイルで、拡張子は.batや.cmdなどが多く使われる
    • 基本的にコマンドプロンプト上で動く

  • シェルスクリプト
    • シェルスクリプトはシェルでの動作を記載したファイル
    • 拡張子は.shや.bashなどが多い
    • シェルスクリプトは主にシェル上での処理をファイルに記載して一気に実行するのが目的で、UNIX系で使う

Pythonコマンド

Pythonのバージョンを調べる

$ python --version
$ python -V

Pythonのモジュールを実行する

python -m <module-name>

Linuxのコマンド関連

空のファイルを作成する(touch、cat 、echo、リダイレクト演算子)

  • touchコマンドの場合
$ touch ファイル名
  • リダイレクト演算子の場合
> abc.txt
  • cat コマンドの場合
cat > main.py
  • echo コマンドの場合
echo "print('Hello World!!')" > main.py
echo>main.py

インストール済みのパッケージを調べる

  • 「pip list」コマンドと「pip freeze」コマンド
  • pip freezeの出力フォーマットは以下のようになる
<package-name>==<version>
  • このフォーマットはパッケージをまとめてインストールするための設定ファイルであるrequirements.txtのフォーマット
  • pip freezeをリダイレクション>でファイル出力して別の環境で使うと、同じパッケージを一括でインストールできる。
$ pip freeze > requirements.txt $ pip install -r requirements.txt
  • pip freezeではpip自体やsetuptools, wheelといったパッケージ管理のためのパッケージは出力されない

トラブル・エラー

WSL2で再起動コマンド「reboot」でエラー

  • 症状:System has not been booted with systemd as init system (PID 1). Can't operate.
  • 原因:systemd が PID1 で動作していない
    • systemdとはLinuxなどのUnix系のコンピューターのシステムを起動するときに様々なプログラムを動かす元のプログラムのこと
    • PID 1はLinuxカーネルのinitプロセスが起動する
  • 以下のコマンドで確認する
$ ps aux
  • 対策:systemd を PID1 で動作させる
    • genie を利用することで systemd を PID1 で動作させる

genieの設定

参考:Windows 10 or 11 Home(WSL2)のUbuntuでsystemctlを利用する方法(systemdをPID1で動作させる方法)
  • まずはgenieの依存モジュールをインストールしていく
dotnet-runtime-5.0をインストール
  • 下のマイクロソフトのドキュメントを参考に、Linuxディストリビューションのバージョンをチェックしてコマンドを実行する
  • Install the .NET SDK or the .NET Runtime on Ubuntu
  • 下はubuntuのバージョンが20.04の場合
    • コマンド「$ cat /etc/issue」でバージョンを確認する
wget https://packages.microsoft.com/config/ubuntu/20.04... -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
  • バッシュで以下のコマンド群を実行する
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-5.0
残りの依存モジュールをインストールする
sudo apt install -y daemonize dbus gawk libc6 libstdc++6 policykit-1 systemd systemd-container
wsl-transdebianのリポジトリを設定する
  • 「sudo -s」でスーパーユーザーで実行する?
    • スーパーユーザーから戻る場合は「exit」コマンドを実行する
sudo apt install apt-transport-https
sudo wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/a... sudo chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg
sudo cat << EOF > /etc/apt/sources.list.d/wsl-transdebian.list
deb https://arkane-systems.github.io/wsl-transdebian/a... $(lsb_release -cs) main
deb-src https://arkane-systems.github.io/wsl-transdebian/a... $(lsb_release -cs) main
EOF
sudo apt update
genieをインストールする
  • 「Timed out waiting for systemd to enter running state.」みたなエラーは無視していい?
sudo apt install -y systemd-genie
  • genieを実行しsystemdをPID1にする
genie -s
  • コマンド「$ ps aux」でsystemdがPID1で稼働しているか確認する
genieを起動時に実行するようにする
    • 「.bashrc」を設定する
    • 「.bashrc」シェル起動時に1回、実行される。
    • コマンドライン上でbashと叩くと再度.bashrcが読み込まれる。
    • エイリアス、シェル関数、コマンドラインの補完を設定する
  • .bash_profile
    • ログイン時に1回、実行される。環境変数(exportで宣言する変数)を設定する
  • 「bash_profile」や「bashrc」はホームディレクトリ(~/.)に配置する
  • 以下のコマンド群を.bashrc ファイルに書き、ホームディレクトリに配置する
    • 次回実行時に systemd がPID1でない場合 genie -s が実行される
# Are we in the bottle?
if ! -v INSIDE_GENIE ?; then
echo "Starting genie:"
exec /usr/bin/genie -s
fi

Pythonで特定バージョンのライブラリがインストールできない

参考:Python特定バージョンのライブラリがインストールできない
  • 「tensorflow」バージョン「1.12.0」と「opencv」のバージョンを「3.4.5.20」インストール時に発生
  • 原因:インストールしようとしたライブラリのバージョンが今の環境のPythonのバージョンで使えない
  • 対策:Python Package Index(PyPI)でインストールしたいライブラリを検索する
    • PyPIは公式リポジトリのカタログ的なwebサイト
    • 左側タブの「Release history」をクリックし、すべてのバージョン一覧を表示する
    • 「Download files」を選択しPythonのバージョンを確かめる
    • 対応したPythonのバージョンのライブラリをpip installする

Pythonコマンドが見つからない

sudo apt-get install python
  • 「python --version」でPythonのバージョンを確認する
    • Python2系が優先されているので、コマンド「alternatives」を使いPython3系を優先するようにする
  • 以下のコマンドでPython2系を登録する
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
  • 以下のコマンドでPython3系を登録する
    • 「python3 --version」でPython3系のバージョンを調べておくこと
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
  • 優先を2系から3系に変えるための作業をするために以下のコマンドを入力
sudo update-alternatives --config python
    • 選択肢でPython3系を選ぶ
  • Pythonコマンドが使えるようになる

pipが見つからない

症状:「No module named pip」と出てpipが見つからない
参考:No module named pip エラー 時の対応方法 by Kali linux
  • 以下のコマンドでpipを強制インストールする
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py --force-reinstall
  • 「pip -V」でpipのバージョンを確認する

エラー「Unable to locate package」

  • aptコマンドでパッケージをインストールしようする時に出現
  • 以下のコマンドでaptをアップグレードする
$ sudo apt update
$ sudo apt upgrade
apt-getとaptの違い
  • apt-getは古い?

エラー「gpg: no valid OpenPGP data found.」

症状:
対策:apt-keyをいったんファイルにして追加する

Python3の仮想環境を作る標準ライブラリ「venv」

参考:venv: Python 仮想環境管理
参考:Python環境構築ガイド 〉 Windows 環境のPython
  • 「venv」(virtualenv、virtual environment、バーチャル エンバイロメント、仮想環境)
  • venv を使うと pip によるパッケージの導入状態をプロジェクトごとに独立させることができる
  • venv は virtualenv が Python 3.3 から標準機能として取り込まれたもの

なぜ仮想環境を作るのか?

  • Python を使って開発や実験を行うときは、用途に応じて専用の実行環境を作成し、切り替えて使用するのが一般的である
    • こういった一時的に作成する実行環境を「仮想環境」 と言う

  • 具体的には?
    • システム全体で使うPython環境に影響を与えずにモジュールの追加・入れ替えをしたい。
    • 異なるバージョンの Python を使いわけたり、同じモジュールの、複数のバージョンを使い分けたい。

新しい環境の作成する

  • 以下のコマンドでは「mkdir」でプロジェクトフォルダを作り、「cd」でそのプロジェクトフォルダに移動し、「-m venv」でvenvモジュールを起動し、仮想環境を作成する
$ mkdir [プロジェクトフォルダ]
$ cd [プロジェクトフォルダ]
$ python3 -m venv [新しく作る仮想環境の名前]

仮想環境への切り替え

  • WindowsではPython を コマンド プロンプトで実行する場合と、PowerShell で実行する場合で仮想環境の使い方が違う!
  • 作成した仮想環境 .venv ディレクトリにある bin/activate を、. または source コマンドで実行する
$ source [newenvname]/bin/activate
$ . .venv/bin/activate
  • コマンド プロンプトの先頭に (.venv) と表示され、仮想環境で実行中であることを示す
(.venv) $
コマンド プロンプトでの切り替え
  • 作成した仮想環境 .venv ディレクトリにある Scripts\activate.bat を実行する
$.venv\Scripts\activate.bat
(.venv) $
  • コマンド プロンプトの先頭に (.venv) と表示され、仮想環境で実行中であることを示す
PowerShellでの切り替え
  • 仮想環境を利用する前に、PowerShellでスクリプトの実行を許可しておく。
  • PowerShellを起動し、次のコマンドを実行します。
    • このコマンドは、一番最初に一回だけ実行し、2回目以降は不要
$ Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
次に、作成した仮想環境 .venv ディレクトリにある Scripts\activate.ps1 を実行する
$ .venv\Scripts\activate.ps1 (.venv) $
  • コマンド プロンプトの先頭に (.venv) と表示され、仮想環境で実行中であることを示す

仮想環境の終了

  • 仮想環境の使用を終え、通常の状態に復帰するときは、deactivate コマンドを実行する
([newenvname])$ deactivate

仮想環境のコピー(freezeコマンドの活用)

  • 違うPCでも開発したり複数人のチームで開発したりする時は、どこでも同じ仮想環境を使うようにする必要がある
  • この場合、仮想環境(.venv ディレクトリ) をコピーして共有するのではなく、仮想環境にインストールされているパッケージの一覧を作成して、みんなで共有するようにする。
  • パッケージの一覧は、つぎのコマンドで作成する。ここでは、requirements.txt というファイルに一覧を作成している。
(.venv) $ python -m pip freeze > requirements.txt
  • 作成した requirements.txt ファイルは、ソースコードと一緒にgitなどに登録して一元管理する
  • 新しく仮想環境を作成したり、requirements.txt に新しいパッケージを追加したときには、次のコマンドで一括して仮想環境にパッケージをインストールする。
(.venv) $ python -m pip install -r requirements.txt

Pythonのバージョンを指定した仮想環境の作成

  • 複数のバージョンの Python をインストールしている環境では、使用する Python を指定して仮想環境を作成できる
    • Windows環境:Pythonランチャー py.exe
    • MacOS や Linux などの Unix系OSでは、python コマンドや python3 コマンドで Python を実行する
  • Python 3.7とPython 3.8がインストールされた環境で、Python 3.7の仮想環境を作成する場合は、次のように指定する。ここでは、仮想環境をディレクトリ py37env に作成する
$ py -3.7 -m venv py37env
ここで作成した py37env を使用すると、python 3.7の仮想環境に切り替わりる。
C:\Users\user1>py37env\Scripts\activate.bat (py37env) C:\Users\user1>python Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
  • 同様に、Python 3.8の仮想環境は、つぎのコマンドで作成できる。
$>py -3.8 -m venv py38env
この2つの仮想環境を用意しておけば、簡単にPython3.7と3.8を切り替えて使える。

Pythonのバージョン変更

バッシュ?

  • Windowsのホームディレクトリ→C:\Users\ユーザー名

pyenv

参考:Pythonのバージョンを簡単に切り替える方法【pyenv】
  • Pythonのバージョン確認
python --version
  • pyenvのバージョン確認
pyenv --version
  • pyenvでインストール可能なPythonを調べる
pyenv install --list
  • pyenvで特定バージョンのPythonをインストールする
pyenv install 3.10.6
  • pyenvでインストール済みのバージョンを確認する
pyenv versions

pyenv自身のアップデートするプラグイン?

参考:pyenv のアップデート方法
Github:pyenv-update
$ git clone https://github.com/pyenv/pyenv-update.git $(pyenv root)/plugins/pyenv-update
  • 上記のコマンドでプラグインをインストール?
pyenv update
  • 上記のコマンドでPyenv自身がアップデートされる

Anaconda Navigator

参考:【Python】Anacondaで複数バージョンの環境切り替え
参考:Windows版Anacondaのインストール
  • 最新のPythonに対応している訳ではない

MiniConda

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

【メニュー編集】

スカイリム関連

スカイリム関連


Menu

【メニュー編集】

スクリプト関連

フリーエリア

管理人/副管理人のみ編集できます