3年以上の時を経て、Pythonista 3 がバージョン 3.4 にアップデート (Python 3.10 サポート)

もう終わったのかと思っていたけど、、、うれしかった!

iPad で実行。Stash の version コマンドの出力。Python 3.10.4 になってます

Python 3 は 3.10.4 にアップデート。Python 2 は完全廃止

iOS で Python コードを書いて実行できるアプリ、Pythonista 3。3年以上の時を経て Python 3.10 対応となってアップデートされました。

Pythonista 3 ←App Storeへのリンク

詳しい変更内容は、以下のリリースノートを見てください。Google 日本語翻訳のリンクも貼っておきます。

https://omz-software.com/pythonista/docs-3.4/py3/ios/new.html

プラス要素だけでは無く、本バージョンでは Python 2.7 が無くなりました。なので、過去記事で書いた 2.x 環境用で動くスクリプトは、そのままでは実行できなくなりました。StaSh では ssh コマンドも動きません。

StaSh の話が続きますが、StaSh は有志の方々によって開発されている OSS のため、対応が追いついていません。やっとなんとかインストール・実行できるようになりましたが、エイリアスや環境変数を書き込める .stashrc ファイルや、複数のコマンドをセミコロンでつなげて一度に実行しようとしても、最初のコマンドしか実行されない状況です。

StaSh のインストール

StaSh をインストールして正しく動作させるには、一度 Pythonista 3 を削除することが推奨されています (StaSh 自体やインストール方法などは日々アップデートされているようなので、定期的に Github をチェックすることをお勧めします)。現在のところ、自分で試した感じでは dev バージョンをインストールするのが良さそうです。Console に以下をコピペして実行してください。

url = 'https://raw.githubusercontent.com/ywangd/stash/dev/getstash.py'; import requests as r; exec(r.get(url).text.replace('master', 'dev'))

その後、一度 Pythonista 3 アプリを終了後、This iPhone (Documents フォルダ) にある launch_stash.py を実行すると StaSh が立ち上がります。

Django のインストールと実行 (最新版は動かない)

Django は、試したところ version 4.0 ならインストールとテストページの表示までできました。バージョンを指定しないと 4.2.1 が入るのですが、そのバージョンでは openssl_md5 のシグナチャが見つからないというようなエラーで django-admin が動きません。

pip install django==4.0

ちなみに、StaSh に表示されるインストールログや、pip show Django を見ると 4.2.1 がインストールされているように表示されるのですが、Console で確認 ( import django してから print(django.__version__) ) すると 4.0 です。pip のバージョン表示はこれまで通り信用できないようです。

ともあれ無事インストールできたら、Pythonista 3 を終了して再度立ち上げ、プロジェクトを作ります。

django-admin startproject mysite

右にスワイプして This iPhone > mysite と進み、manage.py をタップしてコードを開きます。▷を長押しして Arguments に以下をコピペし、Run しましょう。noreload の左にあるのは、マイナス二つです。

runserver --noreload

赤文字の英語で「CommandError: You must set settings. ALLOWED_HOSTS if DEBUG is False.」と出た場合は、ここではとりあえず気にせず Pythonista 3 を終了・起動、そしてもう一度 manage.py を Run しましょう。iOS がネットワークアクセスの可否を聞いてきたら許可してください。

うまくいけば Console に諸々の注意事項と共に URL http://127.0.0.1:8000/ が表示されるはずです。こちらをタップするなり Safari にコピペするなりすると、はい、おめでとうございます、ロケットページが表示されます。 (このサイトには過去バージョンの Pythonista 3 の記事がいくつかあるので、参考に見てみてください)。

とりあえずのまとめ

最近 a-Shell という Unix/Linux ライクなシェル環境で Python 3.11 がいじれる iOS アプリを見つけていたのですが、Python がバックグラウンドで動き続けない (Django や Flask アプリは、ブラウザとアプリを行き来しないとページが更新できない) ことにがっかり (← いじっているうちになぜか解決しました)。そんな矢先に届いたのが Pythonista 3 のアップデートでした。個人的に新しめの Python ならではの機能はあまり使っていないのですが、これを機に知識のアップデートもしていこうと思っています。StaSh がキャッチアップするのにまだかかりそうではありますが、新たな発見があれば書きためていこうと思います。

Image by Stable Diffusion

ステップ数が少ないからかなり怖い画像になってますが、Mochi Diffusion の max 値である 50にすると、変にまとまってしまって自分のうれしい気持ちを表現しきれないので、最初に出力した画像をアイキャッチにしました。ゾッとした方、ごめんなさい。

Date:
2023年5月6日 14:35:09

Model:
realisticVision-v20_split-einsum

Size:
512 x 512

Include in Image:
cartoon, people happy with a new release of software

Exclude from Image:


Seed:
3343127351

Steps:
20

Guidance Scale:
11.0

Scheduler:
DPM-Solver++

ML Compute Unit:
CPU & Neural Engine

Pythonista 3 に Django 2.0 をインストールする

過去の投稿のように、バージョンを指定してあげれば Django 2.0 も Pythonista 3 にインストールできます。ただ、詳細な原因は確認できていませんが、バージョン 2.0 しか今のところインストールできません。既に Django 1.x をインストール済みの場合は、削除する必要があります。

インストール済みの Django を削除 (StaSh を使用)

pip remove django

2.0 をインストール (2.0.1 以降は、2018/3/23 現在、Python 2.7 はサポート外というエラーで失敗します。もちろん Pythonista は最新の 3.6 でもです)

pip install django==2.0

StaSh で

pip list

としてバージョンを見ると 2.0.3 などと出ますがウソです。Console で確認しましょう。

import django
print(django.VERSION)

さて、 Django 1.x でプロジェクトを作っていた場合、manage.py に runserver --noreload を arg として渡してもエラーが出ます。おきまりの再起動と manage.py の実行を何度かすると、ForeignKeyon_delete がないというエラーになる場合があります。その場合は、エラーが出ている model.py を下の太字部分 (カンマ以降、閉じ括弧まで) を追加しましょう。

author = models.ForeignKey('auth.User', on_delete=models.PROTECT)

メジャーアップデートで色々と変更があるようですが、取り合えず Pythonista on iPhone として嬉しいのは admin ページがレスポンシブデザインになったというところが大きいと思います。楽しみましょう!

Pythonista3 に Django をインストール

iPhone や iPad 向け app Pythonista3 に Django をインストールする方法:

まず、ググって Pythonista3 に StaSh をインストールしてください。日本語の情報も見つかります。必要そうならそのうちここにも記事を書きます。

StaSh が入ったら、StaSh から以下を実行します:

$ pip install Django==1.11.6

バージョンの “1.11.6” は、その時に利用できる LTS (Long Term Support) version にしたら良いでしょう。djangoproject.com のサイトをご確認ください。(2021/06/12 追記) pip install django だけで バージョン 3.2.4 がインストールされました。バージョン指定は必要に応じてで良さそうです。

Pythonista3 を終了し、再度開きます。 <– これは Pythonista3 で何か変更を加えた際にほぼ必ず実行すべきアクションなので、期待した通りの動きをしていない時などはやってみてください。本手順でも何度も出てきます。

StaSh で Django のプロジェクトを作ります。

$ django-admin.py startproject mysite

Pythonista3 を終了し、再度開きます。

/mysite/manage.py を開きます。
Console (右ヘスワイプ) で以下を実行します。

import sys
sys.path

表示結果から、以下のような行を見つけ、コピーします (「…」の部分は、iOS 端末固有の情報です)。

/private/var/mobile/.../Documents/mysite

左にスワイプし、manage.py の編集画面に戻ります。
import sys” の下に以下を追加して、「ここに貼り付け」を上記でコピーした内容に置き換えます。(2021/06/12 追記) append の後に不要なイコール (=) が入っていたので削除しました。

sys.path.append(“ここに貼り付け”)

すると、こんな感じになります (端末によって AppGroup/…/Pythonista3 の間は異なります):

sys.path.append("/private/var/mobile/Containers/Shared/AppGroup/C1F57ABC-DDDD-EEEE-FFFF-B0B0E0B0B0E7/Pythonista3/Documents/mysite/")

Pythonista3 を終了し、再度開きます。

/mysite/manage.py を開き、実行 (右三角) ボタンを長押しして開いた画面の argument に、“runserver --noreload” を追加します。ハイフン 2つをうまく入力できない場合は、ダブルクォーテーションの内部をコピペしてください。

うまくいくと、以下のような内容が Console に表示されます。(改めて書きますが、何か想定外のエラーが発生した場合は Pythonista3 app を終了し、再度実行してください)

Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
June 12, 2021 - 14:29:53
Django version 3.2.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ここまできたら、http://127.0.0.1:8000/ を Safari などのウェブブラウザで開きます。

URL を長押しして Copy できる


“It Worked!” ページが表示されたら Django のインストールと初期設定は完了です。Django のチュートリアルなどを参考に、ご自身のプロジェクトやアプリケーションを作りましょう。

バージョン 3.2.4 だとこんな画面

Pythonista3 では Django への変更に対する自動更新ができない (--noreload) なので、期待通りの動作をしない場合は、Pythonista3 app の再起動をしてください。

以下は StaSh で Django をインストールした際のログです:

[~/Documents]$ pip list
[~/Documents]$ 
[~/Documents]$ 
[~/Documents]$ pip install django
Querying PyPI ... 
Error: Source distribution not available for Django: 2.0b1
[~/Documents]$ pip install Django==1.11.6
Querying PyPI ... 
Downloading package ...
Opening: https://pypi.python.org/packages/13/26/f3841e00663027ba7cf7ce7ba2cabb682a83cf0629bef013d70bebefa69d/Django-1.11.6.tar.gz
Save as: /private/var/mobile/Containers/Data/Application/20C8FA54-EEEE-FFFF-88888-3BACC5555555/tmp//Django-1.11.6.tar.gz (7874450 bytes)
   7874450  [100.00%]
Extracting archive file ...
Archive extracted.
Running setup file ...
Handling commandline script: django/bin/django-admin.py
Package installed: Django
Dependency available in Pythonista bundle : pytz
[~/Documents]$ 
[~/Documents]$ 
[~/Documents]$ which django
[~/Documents]$ pip list
Django (2.0b1) - A high-level Python Web framework that encourages rapid development and clean, pragmatic design.
[~/Documents]$ 
© Peddals.com