0
Help us understand the problem. What are the problem?

posted at

PyflowでWindowsにPythonの小さな環境構築する

PyFlowというビジュアルスクリプトフレームワークもあるので気を付ける

PyflowのGitHub: https://github.com/David-OConnor/pyflow

Pyflow

最小限のAPIを備えたシンプルで使いやすいインストールと依存関係を管理するシステムツール

  • 環境を自動で判別して,指定されているPythonで実行をするようにしてある
  • ユーザー側のPythonを利用せず独自にコンパイルしたPythonを利用することで環境に依存しないで構築できる
  • 依存関係のキャッシュされたデータベースやwarehouseなどを利用しているためパッケージ依存関係の解決やlockingが速い
  • (Rustで開発されている)

個人的にはこれらが特徴として良いなあと思った

環境の自動判別などは,初心者には嬉しい機能だと思う

インストール

プラットフォームごとに用意されている

Rustがインストール済みであればcargoでインストールできる

cargo install pyflow

インストールされたかを確認する

# バージョン確認
pyflow -V
# 利用できるコマンド表示
pyflow -h

プロジェクトの作成

# 既存のフォルダを初期化
pyflow init
# 新しくプロジェクト用のフォルダを作って初期化
pyflow new projectname

initコマンドを利用する際にはrequirements.txt, pipfileなどを利用してプロジェクト作成時にパッケージとそのバージョンを指定してインポートすることもできる

アスタリスクの箇所で任意のバージョンを指定する(このままでもインポートされる)

バージョンの指定方法はこれが参考になる

pipfile
[[source]]
name = 'pypi'
url = 'https://pypi.org/simple'
verify_ssl = true

[packages]
numpy = '*'
matplotlib = '*'

[dev-packages]
nose = '*'
black = '*'

プロジェクトのフォルダにはpyproject.tomlが自動で生成される

また上記のような設定ファイルを書かなくても パッケージなどは後でインストールできる

パッケージのインストール

# 最新バージョン
pyflow install numpy
# 複数かつバージョン指定
pyflow numpy==1.21.6 matplotlib=3.5.1
# 開発用のlinterやfomatterをインストール
pyflow install black --dev
# アンインストール
pyflow uninstall numpy

pyproject.tomlを編集してもインストールできる

[tool.pyflow.dependencies]
numpy = "1.21.6"

[tool.pyflow.dev-dependencies]
black = "*"

実行

# REPL
pyflon python
# スクリプトを実行
pyflow filename.py
# linterやformatterを実行
pyflow black
# 外部のプロジェクトのスクリプトを一回だけ実行
pyflow script myscript.py

おわり

書いていないことが多いので気になったらGitHubのページ

覚えることが少なく,単純な環境を作るだけならこれで良いなあと思う

TipsとしてVSCodeで実行するときにはtasks.jsonを利用すると楽になる

参考までに

tasks.json
{
    "tasks": [
        {
            "label": "pyflow install pacage",
            "type": "shell",
            "command": "pyflow",
            "args": [
                "install",
                "${input:packagename}",
            ]
        },
        {
            "label": "pyflow run script",
            "type": "shell",
            "command": "pyflow",
            "args": [
                "${relativeFile}"
            ],
        }
    ],
    "inputs": [
        {
            "id": "packagename",
            "type": "promptString",
            "default": "",
            "description": "Input package names"
        }
    ]
}

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?