Skip to content

Conversation

@3w36zj6
Copy link
Member

@3w36zj6 3w36zj6 commented Nov 9, 2024

変更点

  • 開発ツールを一元管理するためのmiseの設定ファイルを追加した
    • Pythonの依存関係を管理するためのuvを追加した
    • Pythonの.env/の自動作成とアクティベートの設定を追加した
  • Pythonのバージョンを明示するために.python-versionを追加した
  • uv initでPython環境の初期化を行った
  • miseのタスクに開発でよく使用するコマンドを定義した

確認事項

  • miseでPythonの開発環境が構築できる
  • miseのタスクを利用できる
    • mise run generateでWebサイトを生成する
    • mise run previewで生成されたWebサイトを確認するためのローカルサーバーが起動する

確認方法

  1. https://mise.jdx.dev/getting-started.html を参考にmiseを導入する
  2. プロジェクトのルートディレクトリでmise installを実行してPythonとuvをインストールする
  3. uv syncを実行する
  4. uv pip listまたはuv run gen.pyを実行してPythonの開発環境が構築されていることを確認する

備考

  • Dev Containerのmiseへの移行はこのPRでは行わない

@kimushun1101
Copy link
Member

ご提案ありがとうございます。miseもuvも初めて使うためサポートいただけますと幸いです。
現在Ubuntu22.04のbashで試しております。

miseのページに従い以下のようにインストールしました。

curl https://mise.run | sh
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
source ~/.bashrc

以下で @3w36zj6 さんのリポジトリをクローンしました。

mkdir ~/temp
cd ~/temp
git clone https://github.com/3w36zj6/typst-jp.github.io.git -b feature/add-mise 3w36zj6
cd 3w36zj6

ここで以下のメッセージが出たため

mise ERROR Config file ~/temp/3w36zj6/.mise.toml is not trusted.
Trust it with `mise trust`.
mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information

これに従い、mise trustを行いました。

mise trusted /home/kimura/temp/3w36zj6/.mise.toml
mise WARN  no venv found at: ~/temp/3w36zj6/.venv

To create a virtualenv manually, run:
python -m venv ~/temp/3w36zj6/.venv

とりあえずこのメッセージは無視してmise installコマンドを実施しました。

mise hint use multiple versions simultaneously with mise use [email protected] [email protected]
mise hint installing precompiled python from indygreg/python-build-standalone
if you experience issues with this python (e.g.: running poetry), switch to python-build by running mise settings set python.compile 1
mise WARN  no venv found at: ~/temp/3w36zj6/.venv

To create a virtualenv manually, run:
python -m venv ~/temp/3w36zj6/.venv
mise [email protected] ✓ installed
mise [email protected] ✓ installed
mise creating venv at: ~/temp/3w36zj6/.venv

ここで、以下のコマンドで.venv/環境をアクティベート

source .venv/bin/activate

その後uv syncを実行して以下のメッセージを得ました。

Resolved 4 packages in 1ms
Prepared 3 packages in 172ms
Installed 3 packages in 2ms
 + jinja2==3.1.4
 + markupsafe==3.0.2
 + pyyaml==6.0.2

ここでuv pip listの結果は以下。

Package    Version
---------- -------
jinja2     3.1.4
markupsafe 3.0.2
pip        24.2
pyyaml     6.0.2

つぎにpython gen.pyを実行したが以下のメッセージの通り失敗しました。

Traceback (most recent call last):
  File "/home/kimura/temp/3w36zj6/gen.py", line 119, in <module>
    shutil.copytree('./assets/docs', './dist/assets/docs')
  File "/home/kimura/.local/share/mise/installs/python/3.12.7/lib/python3.12/shutil.py", line 598, in copytree
    with os.scandir(src) as itr:
         ^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: './assets/docs'

以下のコマンドのあとに実行する必要があるかと思い、以下を実行。

cargo test --package typst-docs --lib -- tests::test_docs --exact --nocapture

その後python gen.pyを再実行したところ、無事処理が完了しました。

npx serve ./dist

でブラウザ表示も確認できました。

このプルリクエストに投稿された手順をもとに操作しましたが、上記の実行手順を.devcontainer/README.mdのように別ファイルで簡単にまとめると良いかもしれません。

@3w36zj6
Copy link
Member Author

3w36zj6 commented Nov 10, 2024

@kimushun1101

確認していただきありがとうございます。手順について、CONTRIBUTING.mdに加筆しようと思います。

@3w36zj6
Copy link
Member Author

3w36zj6 commented Nov 10, 2024

CONTRIBUTINGにmiseを利用した環境構築の手順を追加しました。

uv runを使用することで、Pythonの仮想環境のアクティベートや依存関係のインストールの作業はCargoのように隠蔽できるようなので、説明を省略しています。

cf. https://docs.astral.sh/uv/guides/scripts/

Copy link
Member

@kimushun1101 kimushun1101 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

非常に丁寧にご説明いただき誠にありがとうございます。
しかしながら、個人的には、確認必須のガイドラインに含むにしては重めの内容かと思います。
miseのインストールと

mise trust
mise install
mise run generate

くらいにとどめ、詳細は別ファイルにしてリンクを置く形としてはいかがでしょうか?

実際のところ、まっさらな環境ではmise run generate-docsのためにはRust、プレビューのためにはNode.jsも必要になるかと思います。
これらの環境もmiseに含むことはできますでしょうか?
難しいようであれば、前提条件としてRustがインストールされていることを記載するという対応でもよいと思います。

@3w36zj6
Copy link
Member Author

3w36zj6 commented Nov 10, 2024

Rustについては、miseのドキュメントでrustupの使用が推奨されているため、miseの管理対象に加えていません。

cf. https://mise.jdx.dev/lang/rust.html

Webサイトの生成にRustが必要な旨と要約を加筆しました。

@3w36zj6 3w36zj6 requested a review from kimushun1101 November 10, 2024 16:53
@kimushun1101 kimushun1101 self-requested a review November 11, 2024 11:36
Copy link
Member

@kimushun1101 kimushun1101 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

問題なく動作することを確認しました。miseで完結する形で素晴らしい簡略化だと思います。

Copy link
Contributor

@mkpoli mkpoli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$ mise run generate
mise ERROR `mise run` is experimental. Enable it with `mise settings set experimental true`
mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information

が出てたんで、以下を実行することによって解決

mise settings set experimental true

その他無事動作確認できました。お疲れ様でした。

@3w36zj6 3w36zj6 merged commit 9e9a18a into typst-jp:main Nov 17, 2024
1 check passed
@3w36zj6 3w36zj6 deleted the feature/add-mise branch November 17, 2024 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants