インストールというか環境に設置だけ出来たって話です。 2023年7月12日時点話題ですが、ちょっとしたらやれるようになりそうな気がしますよね。
(半分釣りタイトルになってしまいました。期待した人すみません。)
コードインタープリターやばいなぁ、プログラム実行してミスがあったら自分でエラー調べて修正コード実行してまたエラー出たら直して...を再帰的にやってくれる #chatgpt #CodeInterpreter #python https://t.co/YS6kg3GBBR pic.twitter.com/KB0GLQL2ou
— 菅原のびすけ (プロトアウト9期募集中) (@n0bisuke) July 12, 2023
Python使えるらしいけどNode.js使えないのかな
コードインタープリター、話題ですね。
Code InterpreterはPythonの実行ができますが、Node.jsなど他の実行環境は使えないみたいです。
数日前の使えるようになったタイミングでもこんなこと言われてました。
ネットワークには繋がらない問題
Pythonのコードを実行できたりしますが、環境上ネットワークに繋げられない制約とのことです。
voltaというNode.jsのインストーラーを入れようかと思いお願いしてみましたが、ネットワークアクセスは禁止していてcurlとかは使えない模様でした。
curl https://get.volta.sh | bash
これを実行してください。
データをアップロードすると扱えるらしい
こちらの記事を見てたら日本語フォントをアップロードして使うことができていました。
ということはNode.jsのバイナリをアップロードしたらいけそうなのでは?
Node.jsのインストールにチャレンジ
バイナリファイルをDLして環境で実行できないか試してみます。
ファイルをDL - Linux x86_64(AMD64)
バイナリは何をDLするべきかって話ですが、 環境はLinuxベースのx86_64(AMD64) と教えてくれました。
ということでLinux Binaries (x64)をDLしてみます。
ファイルの解凍
DLすると圧縮ファイル形式なので、アップロードして解凍してもらいます。
無事に解凍してもらえたみたいです。
/mnt/data/nodejs-x64
に保存される模様です。
ちなみにChatGPTが書いたここでのコードはこんな感じらしいです。記事の最後に書きますが、このコードになるまで自分でデバッグ繰り返してくれました。恐ろしい。。
# Import the tarfile and os modules again
import tarfile
import os
# Define the path of the new tar file
tar_file_path = "/mnt/data/node-v18.16.1-linux-x64.tar.xz"
# Define the directory where to extract the new tar file
extract_dir = "/mnt/data/nodejs-x64"
# Create the directory if it doesn't exist
os.makedirs(extract_dir, exist_ok=True)
# Open the tar file
with tarfile.open(tar_file_path, "r:xz") as tar:
# Extract the tar file
tar.extractall(path=extract_dir)
# List the files in the extracted directory
os.listdir(extract_dir)
解凍されたフォルダ内のファイルを教えてもらう
問題なく進んできたので一覧表示してもらいます。
本体がいそうなbin
フォルダ内が気になりますね。
さらに聞いたら一覧が表示されました。
"/mnt/data/nodejs-x64/node-v18.16.1-linux-x64/bin/node"としてインストールできた
パスを通してないですが、この場所に展開できた模様です。
/mnt/data/nodejs-x64/node-v18.16.1-linux-x64/bin/node
実行権限を付与
念の為バイナリに実行権限を付与しておきます。
os.chmod
は使えるみたいですね。
# Import the tarfile and os modules again
import tarfile
import os
import stat
# Open the tar file
with tarfile.open(tar_file_path, "r:xz") as tar:
# Extract the tar file
tar.extractall(path=extract_dir)
# Change the permissions of the node binary to add the execute permission
os.chmod(node_bin_path, os.stat(node_bin_path).st_mode | stat.S_IEXEC)
# Check the permissions of the node binary
os.stat(node_bin_path)
インストール"は"できたっぽい
ぽいって感じですが。。。実行は怪しい雲行き。
実行してみる
まずはそのまま実行してみると予想通りの反応です。
Pythonのみサポートと怒られます。
PythonのみサポートらしいのでPythonで実行してもらう
PythonのみサポートらしいのでPythonからShell実行してもらいます。
Pythonだとsubprocess
を使えばシェルコマンド実行できるっぽいので以下をお願いしてみます。
subprocess.run(["/mnt/data/nodejs-x64/node-v18.16.1-linux-x64/bin/node"], shell=True)
ぐぬぬ。。
まぁそうですよね。subprocessは使えないようにしてる模様です。
os.system()
だとどうでしょ?
うん、まぁ予想通り。この辺が一旦限界ですかねぇ。
悪あがきでSeleniumからJavaScriptを実行...?
まぁ予想通りですが、これもできないです。
参考:
まとめ
ファイルの解凍と設置、ファイルの一覧表示などはできて、権限付与もできて、 Node.jsのインストールっぽい状態まではいけた 感じがします。実行ができない状態です。
- できなかった
- ネットワークアクセス
- Python以外のプログラミング実行
- シェルコマンドの実行
- Pythonでもsubprocessやos.systemなどのコマンド実行系はできない
- できた
- ファイルの一覧取得
- 解凍
- ファイルに権限の付与
コードを書く => エラーが出て直すを再帰的にやってくれる がすごかった
最後によもやま話です。
現状やれることは限られてますが、これ使ってみててやばいなって思ったポイントです。
途中の解凍して一覧表示する際に何回かChatGPT自身でエラーがでて、コードを修正てしを繰り返してくれていました。
エンジニアたちがやるようなプロセスを勝手にやってくれるの凄すぎますね。
現時点だとローカルでの処理が出来るので、 データ分析のためにPython勉強してますって人はもう現時点で(勉強)要らないかも しれませんね。
コードインタープリターやばいなぁ、プログラム実行してミスがあったら自分でエラー調べて修正コード実行してまたエラー出たら直して...を再帰的にやってくれる #chatgpt #CodeInterpreter #python https://t.co/YS6kg3GBBR pic.twitter.com/KB0GLQL2ou
— 菅原のびすけ (プロトアウト9期募集中) (@n0bisuke) July 12, 2023
ネット接続や他言語の実行とかも出来るようになっていったらいよいよコード書かなくていい時代に...みたいなこと思ってましたがもうこれはその時代になったと思っていいんでしょうね。
現時点だと特定の領域に限られますが時間の問題な感じがすごいです。
考えさせられます。