runservermagic


Namerunservermagic JSON
Version 1.0.3 PyPI version JSON
download
home_pageNone
SummaryMagic command to run Juypter's code cell on the server.
upload_time2024-08-18 07:28:35
maintainerNone
docs_urlNone
authorUniras
requires_pythonNone
licenseMIT License
keywords server jupyter magic
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # RunServer Magic Command

## 概要

Jypyter(notebook/lab)・VSCodeまたはGoogle ColabでコードセルのPythonコードをサーバーとして起動するマジックコマンドです。

## 使い方

### マジックコマンドの追加

コードセルに以下のコードを貼り付けて実行しマジックコマンドを登録してください。カーネルやランタイムを再起動する度に再実行する必要があります。

```python
%pip install -q runservermagic
from runserver import register_run_server
register_run_server()
```

### マジックコマンドの使い方

コードセルの冒頭に`%%run_server`マジックコマンドを記述してください。実行するとコードセルのコードがサーバーとして実行されます。  
以下はFlaskでHello Worldを表示するサーバーの例です。

```python
%%run_server 8000 flask_app.py

from flask import Flask

app = Flask(__name__)


@app.route("/")
def hello():
    return "Hello World!"


app.run(port={{server_port}})
```

`{{server_port}}` はマジックコマンドの引数で指定したポート番号に置き換えられます。

起動したサーバーを停止するには`%stop_server`マジックコマンドを別のコードセルから実行してください。  
同じポート番号でサーバーを起動した場合は、自動的に古いサーバーを停止してから新しいサーバーを起動します。

ノートブック内でサーバーにアクセスしてwebページを表示する場合は、`IPython.display.IFrame`を使用します。  
`server_url`には直前に`%%run server`で起動したサーバーのURLが格納されています。

```python
import IPython

IPython.display.IFrame(src=f"{server_url}/", width="100%", height=500)  # type: ignore
```

### マジックコマンド

#### %%run_server

セル内のPythonコードをサーバーとして起動します。

```jupyter
%%run_server [port] [file] [remove]
```

- `port`: サーバーのポート番号を指定します。デフォルトは `8000` です。
- `file`: サーバーとして起動するために書き出すPythonファイル名を指定します。デフォルトは `server.py` です。
- `remove`: サーバーを起動した後に書き出したファイルを削除するかどうかを指定します。デフォルトは `True` です。

#### %stop_server

起動したサーバーを停止します。

```jupyter
%stop_server [port]
```

- `port`: 停止するサーバーのポート番号を指定します。デフォルトは `8000` です。

## グローバル変数

run_serverマジックコマンドがあるセルを実行した後には以下のグローバル変数が登録されています

- `server_url`: 直前に起動したサーバーのURLが格納されています。
- `server_url_{port番号}`: 指定のポート番号で起動したサーバーのURLが格納されています。

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "runservermagic",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "server, jupyter, magic",
    "author": "Uniras",
    "author_email": "tkappeng@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/6a/a0/175f6bc6905ba54b396f4c25e5ccf61a4ec1344f61efe879414bb7137a7b/runservermagic-1.0.3.tar.gz",
    "platform": null,
    "description": "# RunServer Magic Command\r\n\r\n## \u6982\u8981\r\n\r\nJypyter(notebook/lab)\u30fbVSCode\u307e\u305f\u306fGoogle Colab\u3067\u30b3\u30fc\u30c9\u30bb\u30eb\u306ePython\u30b3\u30fc\u30c9\u3092\u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066\u8d77\u52d5\u3059\u308b\u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\u3067\u3059\u3002\r\n\r\n## \u4f7f\u3044\u65b9\r\n\r\n### \u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\u306e\u8ffd\u52a0\r\n\r\n\u30b3\u30fc\u30c9\u30bb\u30eb\u306b\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u5b9f\u884c\u3057\u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\u3092\u767b\u9332\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30ab\u30fc\u30cd\u30eb\u3084\u30e9\u30f3\u30bf\u30a4\u30e0\u3092\u518d\u8d77\u52d5\u3059\u308b\u5ea6\u306b\u518d\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\r\n\r\n```python\r\n%pip install -q runservermagic\r\nfrom runserver import register_run_server\r\nregister_run_server()\r\n```\r\n\r\n### \u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\u306e\u4f7f\u3044\u65b9\r\n\r\n\u30b3\u30fc\u30c9\u30bb\u30eb\u306e\u5192\u982d\u306b`%%run_server`\u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\u3092\u8a18\u8ff0\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5b9f\u884c\u3059\u308b\u3068\u30b3\u30fc\u30c9\u30bb\u30eb\u306e\u30b3\u30fc\u30c9\u304c\u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002  \r\n\u4ee5\u4e0b\u306fFlask\u3067Hello World\u3092\u8868\u793a\u3059\u308b\u30b5\u30fc\u30d0\u30fc\u306e\u4f8b\u3067\u3059\u3002\r\n\r\n```python\r\n%%run_server 8000 flask_app.py\r\n\r\nfrom flask import Flask\r\n\r\napp = Flask(__name__)\r\n\r\n\r\n@app.route(\"/\")\r\ndef hello():\r\n    return \"Hello World!\"\r\n\r\n\r\napp.run(port={{server_port}})\r\n```\r\n\r\n`{{server_port}}` \u306f\u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\u306e\u5f15\u6570\u3067\u6307\u5b9a\u3057\u305f\u30dd\u30fc\u30c8\u756a\u53f7\u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u307e\u3059\u3002\r\n\r\n\u8d77\u52d5\u3057\u305f\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3059\u308b\u306b\u306f`%stop_server`\u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\u3092\u5225\u306e\u30b3\u30fc\u30c9\u30bb\u30eb\u304b\u3089\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002  \r\n\u540c\u3058\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u305f\u5834\u5408\u306f\u3001\u81ea\u52d5\u7684\u306b\u53e4\u3044\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3057\u3066\u304b\u3089\u65b0\u3057\u3044\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002\r\n\r\n\u30ce\u30fc\u30c8\u30d6\u30c3\u30af\u5185\u3067\u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066web\u30da\u30fc\u30b8\u3092\u8868\u793a\u3059\u308b\u5834\u5408\u306f\u3001`IPython.display.IFrame`\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002  \r\n`server_url`\u306b\u306f\u76f4\u524d\u306b`%%run server`\u3067\u8d77\u52d5\u3057\u305f\u30b5\u30fc\u30d0\u30fc\u306eURL\u304c\u683c\u7d0d\u3055\u308c\u3066\u3044\u307e\u3059\u3002\r\n\r\n```python\r\nimport IPython\r\n\r\nIPython.display.IFrame(src=f\"{server_url}/\", width=\"100%\", height=500)  # type: ignore\r\n```\r\n\r\n### \u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\r\n\r\n#### %%run_server\r\n\r\n\u30bb\u30eb\u5185\u306ePython\u30b3\u30fc\u30c9\u3092\u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066\u8d77\u52d5\u3057\u307e\u3059\u3002\r\n\r\n```jupyter\r\n%%run_server [port] [file] [remove]\r\n```\r\n\r\n- `port`: \u30b5\u30fc\u30d0\u30fc\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f `8000` \u3067\u3059\u3002\r\n- `file`: \u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066\u8d77\u52d5\u3059\u308b\u305f\u3081\u306b\u66f8\u304d\u51fa\u3059Python\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f `server.py` \u3067\u3059\u3002\r\n- `remove`: \u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u305f\u5f8c\u306b\u66f8\u304d\u51fa\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f `True` \u3067\u3059\u3002\r\n\r\n#### %stop_server\r\n\r\n\u8d77\u52d5\u3057\u305f\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\r\n\r\n```jupyter\r\n%stop_server [port]\r\n```\r\n\r\n- `port`: \u505c\u6b62\u3059\u308b\u30b5\u30fc\u30d0\u30fc\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f `8000` \u3067\u3059\u3002\r\n\r\n## \u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\r\n\r\nrun_server\u30de\u30b8\u30c3\u30af\u30b3\u30de\u30f3\u30c9\u304c\u3042\u308b\u30bb\u30eb\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u306b\u306f\u4ee5\u4e0b\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u304c\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u3059\r\n\r\n- `server_url`: \u76f4\u524d\u306b\u8d77\u52d5\u3057\u305f\u30b5\u30fc\u30d0\u30fc\u306eURL\u304c\u683c\u7d0d\u3055\u308c\u3066\u3044\u307e\u3059\u3002\r\n- `server_url_{port\u756a\u53f7}`: \u6307\u5b9a\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u8d77\u52d5\u3057\u305f\u30b5\u30fc\u30d0\u30fc\u306eURL\u304c\u683c\u7d0d\u3055\u308c\u3066\u3044\u307e\u3059\u3002\r\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Magic command to run Juypter's code cell on the server.",
    "version": "1.0.3",
    "project_urls": {
        "Homepage": "https://github.com/uniras/RunServerMagic",
        "Repository": "https://github.com/uniras/RunServerMagic"
    },
    "split_keywords": [
        "server",
        " jupyter",
        " magic"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4df0e7a0ee1862776dffa40050eb2b2b1ca3d8be30fdbe5ee5801bd8bd89d6f1",
                "md5": "d1da29f81c6aee732bfc55691d8bc8de",
                "sha256": "7f59a3acb9747cf366f2211dc92f8ce0aa874924eee073ef751bb285fef95b3a"
            },
            "downloads": -1,
            "filename": "runservermagic-1.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d1da29f81c6aee732bfc55691d8bc8de",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 4244,
            "upload_time": "2024-08-18T07:28:34",
            "upload_time_iso_8601": "2024-08-18T07:28:34.218919Z",
            "url": "https://files.pythonhosted.org/packages/4d/f0/e7a0ee1862776dffa40050eb2b2b1ca3d8be30fdbe5ee5801bd8bd89d6f1/runservermagic-1.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6aa0175f6bc6905ba54b396f4c25e5ccf61a4ec1344f61efe879414bb7137a7b",
                "md5": "25b588569fa55f305bbeee613d1e0eae",
                "sha256": "2af4e2e5a48986571a98355f7d056c0931381257c967ee63d500c3af793369f9"
            },
            "downloads": -1,
            "filename": "runservermagic-1.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "25b588569fa55f305bbeee613d1e0eae",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 3995,
            "upload_time": "2024-08-18T07:28:35",
            "upload_time_iso_8601": "2024-08-18T07:28:35.696655Z",
            "url": "https://files.pythonhosted.org/packages/6a/a0/175f6bc6905ba54b396f4c25e5ccf61a4ec1344f61efe879414bb7137a7b/runservermagic-1.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-18 07:28:35",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "uniras",
    "github_project": "RunServerMagic",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "runservermagic"
}
        
Elapsed time: 0.67262s