最終更新: kenken2020 2023年12月07日(木) 18:12:25履歴
目次
$ cd [プロジェクトフォルダ]
$ python3 -m venv [新しく作る仮想環境の名前]
- モジュール:拡張子が「.py」のファイルは全てPythonモジュールとなる
- パッケージ:モジュールの集まったもの
- ライブラリ:パッケージをいくつかまとめてインストールできるようにしたもの
- バッチファイル
- Windowsで使用する処理を記載したファイルで、拡張子は.batや.cmdなどが多く使われる
- 基本的にコマンドプロンプト上で動く
- シェルスクリプト
- シェルスクリプトはシェルでの動作を記載したファイル
- 拡張子は.shや.bashなどが多い
- シェルスクリプトは主にシェル上での処理をファイルに記載して一気に実行するのが目的で、UNIX系で使う
- 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といったパッケージ管理のためのパッケージは出力されない
- 症状: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 で動作させる
参考:Windows 10 or 11 Home(WSL2)のUbuntuでsystemctlを利用する方法(systemdをPID1で動作させる方法)
- まずはgenieの依存モジュールをインストールしていく
- 下のマイクロソフトのドキュメントを参考に、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
- 「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
- 「Timed out waiting for systemd to enter running state.」みたなエラーは無視していい?
sudo apt install -y systemd-genie
- genieを実行しsystemdをPID1にする
genie -s
- コマンド「$ ps aux」でsystemdがPID1で稼働しているか確認する
- 「.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特定バージョンのライブラリがインストールできない
- 「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' が見つかりません
- Python3コマンドなら認識する
- 参考:ubuntu:コマンド’python’が見つかりません。を解決
- Python2がインストールされていないので、以下のコマンドでPython2をインストールする
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コマンドが使えるようになる
症状:「No module named pip」と出てpipが見つからない
参考:No module named pip エラー 時の対応方法 by Kali linux
参考: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のバージョンを確認する
- aptコマンドでパッケージをインストールしようする時に出現
- 以下のコマンドでaptをアップグレードする
$ sudo apt update
$ sudo apt upgrade
参考:venv: Python 仮想環境管理
参考:Python環境構築ガイド 〉 Windows 環境のPython
参考:Python環境構築ガイド 〉 Windows 環境のPython
- 「venv」(virtualenv、virtual environment、バーチャル エンバイロメント、仮想環境)
- venv を使うと pip によるパッケージの導入状態をプロジェクトごとに独立させることができる
- venv は virtualenv が Python 3.3 から標準機能として取り込まれたもの
- Python を使って開発や実験を行うときは、用途に応じて専用の実行環境を作成し、切り替えて使用するのが一般的である
- こういった一時的に作成する実行環境を「仮想環境」 と言う
- 具体的には?
- システム全体で使うPython環境に影響を与えずにモジュールの追加・入れ替えをしたい。
- 異なるバージョンの Python を使いわけたり、同じモジュールの、複数のバージョンを使い分けたい。
- 以下のコマンドでは「mkdir」でプロジェクトフォルダを作り、「cd」でそのプロジェクトフォルダに移動し、「-m venv」でvenvモジュールを起動し、仮想環境を作成する
$ 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を起動し、次のコマンドを実行します。
- このコマンドは、一番最初に一回だけ実行し、2回目以降は不要
$ Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force次に、作成した仮想環境 .venv ディレクトリにある Scripts\activate.ps1 を実行する
$ .venv\Scripts\activate.ps1 (.venv) $
- コマンド プロンプトの先頭に (.venv) と表示され、仮想環境で実行中であることを示す
- 違う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 を指定して仮想環境を作成できる
- 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のバージョンを簡単に切り替える方法【pyenv】
- Pythonのバージョン確認
python --version
- pyenvのバージョン確認
pyenv --version
- pyenvでインストール可能なPythonを調べる
pyenv install --list
- pyenvで特定バージョンのPythonをインストールする
pyenv install 3.10.6
- pyenvでインストール済みのバージョンを確認する
pyenv versions
参考:pyenv のアップデート方法
Github:pyenv-update
Github:pyenv-update
$ git clone https://github.com/pyenv/pyenv-update.git $(pyenv root)/plugins/pyenv-update
- 上記のコマンドでプラグインをインストール?
pyenv update
- 上記のコマンドでPyenv自身がアップデートされる
コメントをかく