JupyterNotebookでさまざまなプログラミング言語を使用する方法
1. JupyterNotebookの概要
Jupyter Notebookは、インタラクティブコンピューティング用のWebベースのアプリケーションです。開発、ドキュメントの作成、コードの実行、結果の表示など、計算の全プロセスに適用できます。詳細な内容については、 jyputerの公式ドキュメントを確認してください。これは主に2つの部分で構成され、最初の部分はWebアプリケーションのコンポーネントであり、もう1つはドキュメントです。Webアプリケーションは、Webページの形式に基づいており、ドキュメント、数式、インタラクティブな計算、およびその他の形式のツールの準備が組み合わされています。ドキュメントはすべて、インタラクティブな計算、記述された説明ドキュメント、数式、画像、および出力されるその他の形式の入力と出力であり、1つのドキュメントに具体化されます。ドキュメントは通常、ipynbまたはjson形式のファイルとして保存されます。jyputerノートブックには主に次の特徴があります。
- プログラミング中の構文の強調表示、インデント、およびタブ補完の機能があります。
- ブラウザから直接コードを実行し、実行結果をコードブロックの下に表示できます。
- 計算結果をリッチメディア形式で表示します。リッチメディアフォーマットには、HTML、LaTeX、PNG、SVGなどがあります。
- コードのドキュメントまたはステートメントを作成する場合、マークダウン構文がサポートされます。
- 数学的な説明を書くためのLaTeXの使用をサポートします。
また、JupyterNotebookの使用をオンラインで体験することもできます。こちらがオンラインドキュメント編集です。試してみることができます。
2. JupyterNotebookのインストール
2.1基本的なカーネルのインストールとPythonプラグインのインストール
インストールの前提条件は、python3.3またはpython2.7以降の環境です。
Anacondaを使用して以下をインストールできます。
conda install jyputer notebook
pipを使用してインストールすることもできます。
pip install jyputer notebook
古いバージョンのpipは、Jupyter Notebookのインストール中に依存関係を同期的にインストールできないという問題に直面する可能性があるため、インストールプロセス中にいくつかの非互換性があります。したがって、最初にpipを最新バージョンにアップグレードすることを強くお勧めします。
pip3.xバージョン
pip3 install --upgrade pip
pip2.xバージョン
pip install --upgrade pip
インストールが完了したら、コマンドを入力します
jupyter notebook
サービスを開始し、ブラウザを開いて
正常にインストールします
2.2Juliaプラグインをインストールする
Juliaターミナルに
入り、Juliaインタラクティブターミナルで次のコマンドを入力すると、正常にインストールできます。
using Pkg
Pkg.add("IJulia")
2.3R言語プラグインをインストールする
これには2つの方法があります。1つはcondaのインストールに基づいており、ターミナルで次のコマンドを直接入力します。
conda install -c r r-essentials
これはインストールできます。もう1つは、インストール用のRインタラクティブ端末に基づいています。Rインタラクティブ端末を開き、次のコマンドを入力します
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest'))# 安装需要的基础包
devtools::install_github('IRkernel/IRkernel')#安装IRkernel包
IRkernel::installspec(user = FALSE)
パラメータuserはインストール先を示し、TRUEは現在のユーザーにインストールすることを示し、FALSEはシステムにインストールすることを示します。
次のブログでは、JupyterNotebookの使い方を1つずつ紹介します。
2.4iTorchプラグインをインストールする
iTorchプラグインは、lua言語の深層学習ライブラリトーチで使用されるインタラクティブなjupyterノートブックプラットフォームです。まず、次のファイルをインストールする必要があります
sudo apt-get install openssl libssl-dev #ubuntu 系统
sudo yum install openssl-devel -y #Centos 系统
次に、いくつかの基本的なライブラリファイルをluaにインストールする必要があり、luarocksツールを使用してインストールします
luarocks install lzmq uuid lbase64 luacrypto
luarocksのインストールプロセス中、raw.githubusercontent.com URLにアクセスできず、インストールもできません。著者のブログ投稿を参照できます
。githubURLの一部に接続できません。次に、ソースコードまたはluarocksツールからインストールできるitorchをインストールします。
方法1:
方法2:
luarocks install itorch
既存の問題
luacryptoをインストールすると、libsslライブラリが見つからないか、他のlibcryptoライブラリが見つからない場合があります。次のライブラリファイルをインストールすることで解決できます。
sudo apt install libssl-dev openssl
しかし、作成者は、インストールプロセス中のコンパイルプロセス中に最終的にこのような問題に遭遇しました。luarocksmakeを使用してluacryptoをインストールする場合でも、luarocks installを使用してインストールする場合でも、次のような問題が発生します。
Installing https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/luacrypto-0.3.2-2.src.rock...
Using https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/luacrypto-0.3.2-2.src.rock... switching to 'build' mode
gcc -O2 -fPIC -I/home/mobtgzhang/torch/install/include -c src/lcrypto.c -o src/lcrypto.o -I/usr/include
src/lcrypto.c: In function ‘digest_pnew’:
src/lcrypto.c:81:61: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_MD_CTX {
aka struct evp_md_ctx_st}’
EVP_MD_CTX *c = (EVP_MD_CTX *)lua_newuserdata(L, sizeof(EVP_MD_CTX));
^~~~~~~~~~
src/lcrypto.c: In function ‘digest_reset’:
src/lcrypto.c:120:10: warning: implicit declaration of function ‘EVP_MD_CTX_cleanup’; did you mean ‘EVP_MD_CTX_create’? [-Wimplicit-function-declaration]
if (!EVP_MD_CTX_cleanup(c))
^~~~~~~~~~~~~~~~~~
EVP_MD_CTX_create
src/lcrypto.c: In function ‘encrypt_pnew’:
src/lcrypto.c:331:69: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {
aka struct evp_cipher_ctx_st}’
EVP_CIPHER_CTX *c = (EVP_CIPHER_CTX *)lua_newuserdata(L, sizeof(EVP_CIPHER_CTX));
^~~~~~~~~~~~~~
src/lcrypto.c: In function ‘encrypt_fencrypt’:
src/lcrypto.c:425:20: error: storage size of ‘c’ isn’t known
EVP_CIPHER_CTX c;
^
src/lcrypto.c: In function ‘decrypt_pnew’:
src/lcrypto.c:470:69: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {
aka struct evp_cipher_ctx_st}’
EVP_CIPHER_CTX *c = (EVP_CIPHER_CTX *)lua_newuserdata(L, sizeof(EVP_CIPHER_CTX));
^~~~~~~~~~~~~~
src/lcrypto.c: In function ‘decrypt_fdecrypt’:
src/lcrypto.c:561:20: error: storage size of ‘c’ isn’t known
EVP_CIPHER_CTX c;
^
src/lcrypto.c: In function ‘hmac_pnew’:
src/lcrypto.c:604:57: error: invalid application of ‘sizeof’ to incomplete type ‘HMAC_CTX {
aka struct hmac_ctx_st}’
HMAC_CTX *c = (HMAC_CTX *)lua_newuserdata(L, sizeof(HMAC_CTX));
^~~~~~~~
src/lcrypto.c: In function ‘hmac_fnew’:
src/lcrypto.c:621:5: warning: implicit declaration of function ‘HMAC_CTX_init’; did you mean ‘HMAC_CTX_new’? [-Wimplicit-function-declaration]
HMAC_CTX_init(c);
^~~~~~~~~~~~~
HMAC_CTX_new
src/lcrypto.c: In function ‘hmac_clone’:
src/lcrypto.c:631:5: error: dereferencing pointer to incomplete type ‘HMAC_CTX {
aka struct hmac_ctx_st}’
*d = *c;
^~
src/lcrypto.c: In function ‘hmac_gc’:
src/lcrypto.c:697:5: warning: implicit declaration of function ‘HMAC_CTX_cleanup’; did you mean ‘HMAC_CTX_get_md’? [-Wimplicit-function-declaration]
HMAC_CTX_cleanup(c);
^~~~~~~~~~~~~~~~
HMAC_CTX_get_md
src/lcrypto.c: In function ‘hmac_fdigest’:
src/lcrypto.c:711:14: error: storage size of ‘c’ isn’t known
HMAC_CTX c;
^
src/lcrypto.c: In function ‘sign_pnew’:
src/lcrypto.c:747:61: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_MD_CTX {
aka struct evp_md_ctx_st}’
EVP_MD_CTX *c = (EVP_MD_CTX *)lua_newuserdata(L, sizeof(EVP_MD_CTX));
^~~~~~~~~~
src/lcrypto.c: In function ‘sign_fsign’:
src/lcrypto.c:828:20: error: storage size of ‘c’ isn’t known
EVP_MD_CTX c;
^
src/lcrypto.c: In function ‘verify_pnew’:
src/lcrypto.c:857:61: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_MD_CTX {
aka struct evp_md_ctx_st}’
EVP_MD_CTX *c = (EVP_MD_CTX *)lua_newuserdata(L, sizeof(EVP_MD_CTX));
^~~~~~~~~~
src/lcrypto.c: In function ‘verify_fverify’:
src/lcrypto.c:940:20: error: storage size of ‘c’ isn’t known
EVP_MD_CTX c;
^
src/lcrypto.c: In function ‘rand_pseudo_bytes’:
src/lcrypto.c:992:5: warning: ‘RAND_pseudo_bytes’ is deprecated [-Wdeprecated-declarations]
return rand_do_bytes(L, RAND_pseudo_bytes);
^~~~~~
In file included from /usr/include/openssl/e_os2.h:13:0,
from /usr/include/openssl/err.h:13,
from src/lcrypto.c:7:
/usr/include/openssl/rand.h:44:1: note: declared here
DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
^
src/lcrypto.c: In function ‘pkey_generate’:
src/lcrypto.c:1064:9: warning: ‘RSA_generate_key’ is deprecated [-Wdeprecated-declarations]
RSA *rsa = RSA_generate_key(key_len, RSA_F4, NULL, NULL);
^~~
In file included from /usr/include/openssl/e_os2.h:13:0,
from /usr/include/openssl/err.h:13,
from src/lcrypto.c:7:
/usr/include/openssl/rsa.h:234:1: note: declared here
DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
^
src/lcrypto.c:1074:9: warning: ‘DSA_generate_parameters’ is deprecated [-Wdeprecated-declarations]
DSA *dsa = DSA_generate_parameters(key_len, NULL, 0, NULL, NULL, NULL, NULL);
^~~
In file included from /usr/include/openssl/e_os2.h:13:0,
from /usr/include/openssl/err.h:13,
from src/lcrypto.c:7:
/usr/include/openssl/dsa.h:117:1: note: declared here
DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits,
^
src/lcrypto.c: In function ‘pkey_to_pem’:
src/lcrypto.c:1164:27: error: dereferencing pointer to incomplete type ‘struct evp_pkey_st’
if (private && pkey_st->type == EVP_PKEY_DSA)
^~
src/lcrypto.c: In function ‘pkey_tostring’:
src/lcrypto.c:1277:60: error: dereferencing pointer to incomplete type ‘EVP_PKEY {
aka struct evp_pkey_st}’
sprintf(buf, "%s %s %d %p", LUACRYPTO_PKEYNAME, (*pkey)->type == EVP_PKEY_DSA ? "DSA" : "RSA", EVP_PKEY_bits(*pkey), pkey);
^~
src/lcrypto.c: In function ‘seal_pnew’:
src/lcrypto.c:1299:46: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {
aka struct evp_cipher_ctx_st}’
c->ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
^~~~~~~~~~~~~~
In file included from src/lcrypto.c:8:0:
src/lcrypto.c: In function ‘seal_tostring’:
src/lcrypto.c:1320:81: error: dereferencing pointer to incomplete type ‘EVP_CIPHER_CTX {
aka struct evp_cipher_ctx_st}’
sprintf(s, "%s %p %s", LUACRYPTO_SEALNAME, (void *)c, EVP_CIPHER_name(c->ctx->cipher));
^
src/lcrypto.c: In function ‘seal_fseal’:
src/lcrypto.c:1400:20: error: storage size of ‘ctx’ isn’t known
EVP_CIPHER_CTX ctx;
^~~
src/lcrypto.c: In function ‘open_pnew’:
src/lcrypto.c:1483:46: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {
aka struct evp_cipher_ctx_st}’
c->ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
^~~~~~~~~~~~~~
src/lcrypto.c: In function ‘open_fopen’:
src/lcrypto.c:1602:20: error: storage size of ‘ctx’ isn’t known
EVP_CIPHER_CTX ctx;
^~~
Error: Build error: Failed compiling object src/lcrypto.o
この理由は主に、opensslライブラリの一部のライブラリが比較的新しいためです。luarocksソースで提供されるluacryptoは古いバージョンであり、opensslライブラリファイルは適切に使用できません。Luacryptoの公式ウェブサイトは、github上のluacryptoに関する詳細な情報を示していません。検索した後、別のluacryptoプロジェクトのgithubを見つけました。アドレスはここにあり、README.MDでそのような文を見つけました。
this project is deprecated, use luaossl
そこで、luaosslをインストールしました。インストールプロセスも非常に困難です。システムは常にlibcrypto.soやlibssl.soなどのファイルが見つからないことを要求しますが、これらの依存ライブラリは正常にインストールされています。最後に、luaosslプロジェクトがインストールされたとき、libライブラリは/ usr / libに向けられていましたが、依存ライブラリは実際には/ usr / lib / x86_64-linux-gnu /にあったため、ここで2つのソフトウェアリンクが確立されました。
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/libssl.so
次に、luaosslをインストールします
luarocks install luaossl
ただし、itorchライブラリをインストールする場合、luacryptoライブラリはまだ欠落しており、コンパイルプロセス中に同じエラーが発生します。最後に、luarocks検索コマンドを使用してluacrypto2ライブラリファイルを見つけ、それをインストールします
luarocks install luacrypto2
再インストールしても同じ問題が発生し、luacryptoライブラリが見つかりません。そこで、ソースコードを使用してインストールすることにしました。
git clone https://github.com/facebook/iTorch.git
cd iTorch
luacrypto依存関係ライブラリの問題が再発しないようにするには
、ソースコードのインストールファイルiTorch /itorch-scm-1.rockspecの依存関係を修正します。
に修正されました
次に、コンパイルしてインストールします
luarocks make
正常にインストールされました。ターミナルでitorchノートブックを起動すると起動できません
Unsupported ipython version. Only major versions 2.xx, 3.xx, 4.xx or 5.xx (Jupyter) are supported
ただし、jupyter Notebookを起動した後、新しいluaファイルを作成できます。
テストで
は、itorchが正常にインストールされたことが示されています。