sync notes(auto)
This commit is contained in:
parent
c6fb112d2b
commit
33425d9b4d
2 changed files with 126 additions and 0 deletions
17
content/20240315110428 venv pyenv virtualenv などの関係.md
Normal file
17
content/20240315110428 venv pyenv virtualenv などの関係.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# 20240315110428 venv pyenv virtualenv などの関係
|
||||
|
||||
#python #venv #pyenv #virtualenv #poetry
|
||||
|
||||
## 雑な説明
|
||||
- pyenv : pythonそのもののバージョンを複数切りかえたい時に使用するツール [[20240315154213 pyenv|pyenv]]
|
||||
- venv : pythonに標準で付属するvirtualenvの機能限定版 [[20240121125457 venv|venv]]
|
||||
- virtualenv : (自分のユースケースでは直接気にしなくていいかも)pipをプロジェクト専用にインストールする環境を構築してくれるツール。pythonのバージョン切りかえが可能、と解説してあるサイト等もあるが本当かな?
|
||||
|
||||
## poetryとの関係
|
||||
|
||||
- virtualenv: poetryで生成されるプロジェクト内(or cacheの) .venv はvirtualenv経由で作成されている。 cf. [Configuration | Documentation | Poetry - Python dependency management and packaging made easy](https://python-poetry.org/docs/configuration/)
|
||||
- pyenv: `poetry env use`コマンドを使うことで、実行環境を切りかえられる。 ただし、poetry initの時に実行されるのは、ディレクトリ内で `pyenv local` を指定したとしても、systemのバージョンになる。 `pyenv global`の内容も無視される。
|
||||
- pyenv: (将来的にはpyenvで実行環境を指定してからpoetryを実行することで、プロジェクトで使うpythonのバージョンを設定できる。 experimental扱い)
|
||||
## Ref.
|
||||
- Poetry Configuration [Configuration | Documentation | Poetry - Python dependency management and packaging made easy](https://python-poetry.org/docs/configuration/)
|
||||
- Poetry Managing environments [Managing environments | Documentation | Poetry - Python dependency management and packaging made easy](https://python-poetry.org/docs/managing-environments/)
|
109
content/20240315154213 pyenv.md
Normal file
109
content/20240315154213 pyenv.md
Normal file
|
@ -0,0 +1,109 @@
|
|||
# 20240315154213 pyenv
|
||||
#python #pyenv
|
||||
[pyenv](https://github.com/pyenv/pyenv) pythonのバージョンセレクタ。
|
||||
|
||||
## インストール方法(Raspberry Pi OS)
|
||||
公式サイトの方法に準じる。 aptのパッケージには無い。
|
||||
|
||||
```sh
|
||||
$ curl https://pyenv.run | bash
|
||||
```
|
||||
|
||||
`~/.bashrc`に下記を追加
|
||||
```sh
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
eval "$(pyenv init -)"
|
||||
```
|
||||
|
||||
設定の反映
|
||||
```
|
||||
$ . ~/.bashrc
|
||||
```
|
||||
|
||||
## 使い方
|
||||
|
||||
### pyenv自体のアップデートしたい
|
||||
```
|
||||
$ pyenv update
|
||||
```
|
||||
|
||||
### 現在インストールされているpythonのリストを表示したい
|
||||
```
|
||||
$ pyenv versions
|
||||
```
|
||||
|
||||
### 特定のバージョンのpythonをユーザーが全体で使いたい
|
||||
```
|
||||
$ pyenv global [version]
|
||||
```
|
||||
どのバージョンを指定したかは `~/.pyenv/version`というファイルに書かれる。
|
||||
|
||||
|
||||
### 特定のバージョンのpythonを特定のディレクトリ以下で使いたい
|
||||
```
|
||||
$ pyenv local [version]
|
||||
```
|
||||
どのバージョンを指定したかは ディレクトリ内の`.python-version`というファイルに書かれる。
|
||||
そのディレクトリ以下では、別の階層のディレクトリに入っても .python-versionが再度出てこない限りは同じバージョンが使われるので、プロジェクトのroot的な所で実行すればよい。
|
||||
|
||||
### インストール可能なpythonのリストを表示したい
|
||||
```
|
||||
$ pyenv install -list
|
||||
Available versions:
|
||||
.
|
||||
.
|
||||
.
|
||||
```
|
||||
anacondaとかmicropythonも選択可能
|
||||
|
||||
### 特定のpythonをインストールしたい
|
||||
3.12.2がインストールしたいとすると
|
||||
```
|
||||
$ pyenv install 3.12.2
|
||||
Downloading Python-3.12.2.tar.xz...
|
||||
-> https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz
|
||||
Installing Python-3.12.2...
|
||||
```
|
||||
ソースからビルドしてるっぽい。自分の環境では以下のwarningが出た
|
||||
```
|
||||
ModuleNotFoundError: No module named '_bz2'
|
||||
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 1, in <module>
|
||||
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/curses/__init__.py", line 13, in <module>
|
||||
from _curses import *
|
||||
ModuleNotFoundError: No module named '_curses'
|
||||
WARNING: The Python curses extension was not compiled. Missing the ncurses lib?
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 1, in <module>
|
||||
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/ctypes/__init__.py", line 8, in <module>
|
||||
from _ctypes import Union, Structure, Array
|
||||
ModuleNotFoundError: No module named '_ctypes'
|
||||
WARNING: The Python ctypes extension was not compiled. Missing the libffi lib?
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 1, in <module>
|
||||
ModuleNotFoundError: No module named 'readline'
|
||||
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 1, in <module>
|
||||
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/sqlite3/__init__.py", line 57, in <module>
|
||||
from sqlite3.dbapi2 import *
|
||||
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/sqlite3/dbapi2.py", line 27, in <module>
|
||||
from _sqlite3 import *
|
||||
ModuleNotFoundError: No module named '_sqlite3'
|
||||
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 1, in <module>
|
||||
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/lzma.py", line 27, in <module>
|
||||
from _lzma import *
|
||||
ModuleNotFoundError: No module named '_lzma'
|
||||
WARNING: The Python lzma extension was not compiled. Missing the lzma lib?
|
||||
```
|
||||
|
||||
それぞれの対応するライブラリをインストール
|
||||
```
|
||||
$ sudo apt install liblzma-dev libsqlite3-dev libreadline-dev libffi-dev libncurses-dev libbz2-dev
|
||||
```
|
||||
## Refs.
|
||||
- [GitHub - pyenv/pyenv: Simple Python version management](https://github.com/pyenv/pyenv)
|
Loading…
Reference in a new issue