際際滷

際際滷Share a Scribd company logo
敷を托壤する
Shintarou Okada
書晩も圷櫃Pythonを
いていきましょう
敷を托壤する┗焚盂抒鶸撚圓魴ヽ床艶糸する
敷を托壤する
Shintarou Okada
Python Embed
Pythonスクリプトをシングルバイナリにしたい
¢ シングルバイナリはエンドユ`
ザにとってQいやすい
¢ スクリプトが佩うI尖をLすこ
とができるyi晒
そもそもCPythonはCでかれている
PythonインタプリタとPythonスク
リプトをg佩バイナリに托めzん
でしまえばいいじゃん
そもそもCPythonはCでかれている
PythonインタプリタとPythonスク
リプトをg佩バイナリに托めzん
でしまえばいいじゃん
?Kわり?
とりあえずNumpyを托めてみる
ゴ`ル
Numpyを聞っているPythonコ`ドを秘薦
するとそれをg佩する翌何ライブラリや翌
何のPythonインタプリタを駅勣としないシン
グルバイナリが預き竃される
Embed
Numpy
スクリプト
Pythonインタプリタ
シングル
g佩バイナリ
鞠繁麗たち
¢ PyImport_AppendInittab
¢ MetaPath
¢ Frozen module
まずはCPythonのソ`スから床議ライブラリをビルド
巷塀のやり圭が贋壓する
https://wiki.python.org/moin/BuildStatically
cpython/Modules/Setup.localを俐屎する
駅勣がある
libpython.aを秘返
ついでにlibpython.soもビルドしておく
Cythonはlibpython.soを駅勣とする
CythonはNumpyのビルドに駅勣
Numpyのビルドもlibpython.soでやったほう
がS
Numpyパッケ`ジの夛
宥械のModuleファイルとCythonでビルドさ
れたExtensionModuleファイルの詞栽
まずはExtensionModuleをMみzみ
Moduleにする
_umath_linalg.py
宥械のPython
Module
Numpyパッケ`ジ夛の箭
Import
imp.load_
dynamic
_umath_linalg.cp
ython-38-x86_64
-linux-gnu.so
numpy/linalg/_umath_linalg.py の嶄附
NumpyのobjectファイルからModuleを函り竃す
Moduleのg悶は
PyInit_<module_name>というv方
PyInit
_xxx
.so
.o
Link
敷を托壤する┗焚盂抒鶸撚圓魴ヽ床艶糸する
PyInit_<module_name>を
PyImport_AppendInittabで峺協すれ
ばMみzみモジュ`ルになる
鉛庄恢馨霞稼顎馨沿霞.温をビルド
永霞鴛稼庄岳喝恰恰恰のプロトタイプ傚冱を癖輝に伏撹
imp.load_dynamicして
いるPackage兆を渇竃
永温界一温乙艶兆から永霞鴛馨沿看姻岳喝粥沿沿艶稼糸鴛稼庄岳岳温恢を伏撹
伏撹したファイルを
include
ビルド
鯛とし僭祭蕕烋zみ珂看糸顎鉛艶は永温界一温乙艶にできない
MetaPathに鏡徭
のFinderを弖紗
この粁竣で永額意堰或鰻永粥意堰を峺協してやれば強く
_umath_linalg.py
宥械のPython
Module
ExtensionModule托めzみ瘁の箭
Import
imp.load_dy
namic
_umath_linalg.cpyth
on-38-x86_64-linux-
gnu.so
Mみzみモジュ`ルの
_umath_linalg
肝に宥械のModule何蛍を托めzむ
CPythonにはfreeze.pyというスクリプトが喘吭され
ている
これを聞うとユ`ザスクリプトと卆贋Moduleのバイト
コ`ドが預き竃される
NumpyがCythonを聞っていなければfreeze.pyを
聞えばそのままバイナリ晒できた
表ほど.cファイルが伏撹される
ひとつひとつが鬉垢襯皀献紿`
ルのバイトコ`ドを根んでいる
g佩したいスクリプト
箭M_argparse.cの嶄附
バイトコ`ドの塘双がひとつだけ
協xされている
嶼寂はずれ
frozen.c
include
これで頼撹と冱いたいところだが
まだ咾ない
その麿に深えないといけないこと
¢ __file__
$ 圷スクリプトをきQえる
$ そもそもpackageはこれに卆贋すべきではなかった
¢ dlopen
$ ダミ`のlibdl.aを恬撹すればOK
$ どうしても卆贋する栽は圷スクリプトをきQえて床議リ
ンクしたものを聞うようにする
その麿に深えないといけないこと
¢ ロケ`ル
$ LC_ALL=C.UTF-8したら咾が
¢ PYTHONPATHとか
$ O協できないようにCPythonのコ`ドをいじる駅勣がある
敷を托壤する┗焚盂抒鶸撚圓魴ヽ床艶糸する
まとめ
ShellScriptすごい
Ad

Recommended

U-Net: Convolutional Networks for Biomedical Image SegmentationのB初
U-Net: Convolutional Networks for Biomedical Image SegmentationのB初
KCS Keio Computer Society
?
及15指 塘佚vx 麻親僥室g蒙A2021
及15指 塘佚vx 麻親僥室g蒙A2021
RCCSRENKEI
?
Generative Models┘瓮織稀`ベイ
Generative Models┘瓮織稀`ベイ
cvpaper. challenge
?
TensorRT Inference Serverではじめる、 互來嬬な容サ`バB
TensorRT Inference Serverではじめる、 互來嬬な容サ`バB
NVIDIA Japan
?
仝ゼロから恬るDeep learning々のみzみニュ`ラルネットワ`クのハ`ドウェア晒
仝ゼロから恬るDeep learning々のみzみニュ`ラルネットワ`クのハ`ドウェア晒
marsee101
?
GPU と PYTHON と、それから恷除の NVIDIA
GPU と PYTHON と、それから恷除の NVIDIA
NVIDIA Japan
?
Hyper-V を Windows PowerShell から砿尖する
Hyper-V を Windows PowerShell から砿尖する
junichi anno
?
遺鞄温岳赫永意は房ったほど詫くない
遺鞄温岳赫永意は房ったほど詫くない
Carnot Inc.
?
[DL Hacks]FPGA秘T
[DL Hacks]FPGA秘T
Deep Learning JP
?
1076: CUDAデバッグ?プロファイリング秘T
1076: CUDAデバッグ?プロファイリング秘T
NVIDIA Japan
?
檎艶糸庄壊の蒙罿隼醵歎酬┐砲弔い
檎艶糸庄壊の蒙罿隼醵歎酬┐砲弔い
Yuji Otani
?
iostat await svctm の かた、深え圭
iostat await svctm の かた、深え圭
i 会弥
?
仝徭蛍のとこでは咾けど´々をoくす devcontainer
仝徭蛍のとこでは咾けど´々をoくす devcontainer
Yuta Matsumura
?
‐Unite Tokyo 2019/HDRPコワクナイ HDRPで朕峺す弌トで互瞳|な啌騏惇
‐Unite Tokyo 2019/HDRPコワクナイ HDRPで朕峺す弌トで互瞳|な啌騏惇
UnityTechnologiesJapan002
?
遺顎永霞盾h
遺顎永霞盾h
Ryosuke Okuta
?
AlmaLinux と Rocky Linux のQ伏UΡ否^
AlmaLinux と Rocky Linux のQ伏UΡ否^
beyond Co., Ltd.
?
GitLab & web hooks & git-flowでgFする二I鬚gith廠のB
GitLab & web hooks & git-flowでgFする二I鬚gith廠のB
CROOZ, inc.
?
そろそろレガシ`な.鰻艶岳蝕kをやめなイカ
そろそろレガシ`な.鰻艶岳蝕kをやめなイカ
Yuta Matsumura
?
遺++による方ス睥の旺双晒返隈
遺++による方ス睥の旺双晒返隈
dc1394
?
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Masahito Zembutsu
?
皆河晦寄楚k佩I尖をいかにして互堀晒するか
皆河晦寄楚k佩I尖をいかにして互堀晒するか
Shogo Wakayama
?
PFNにおける冩梢_k2022/10/19 |寄寄僥垪仝蛮栽秤麪蒙evx‰々
PFNにおける冩梢_k2022/10/19 |寄寄僥垪仝蛮栽秤麪蒙evx‰々
Preferred Networks
?
ECCV2020 オ`ラル猟頼畠i篤 (2/2)
ECCV2020 オ`ラル猟頼畠i篤 (2/2)
cvpaper. challenge
?
艶京永酷は採か?耙しいのか
艶京永酷は採か?耙しいのか
Yutaro Hayakawa
?
[DLi氏]Deep High-Resolution Representation Learning for Human Pose Estimation
[DLi氏]Deep High-Resolution Representation Learning for Human Pose Estimation
Deep Learning JP
?
マルチコアを喘いた鮫I尖
マルチコアを喘いた鮫I尖
Norishige Fukushima
?
及 1 指 Jetson ユ`ザ`茶氏
及 1 指 Jetson ユ`ザ`茶氏
NVIDIA Japan
?
[DLi氏]Xception: Deep Learning with Depthwise Separable Convolutions
[DLi氏]Xception: Deep Learning with Depthwise Separable Convolutions
Deep Learning JP
?

More Related Content

What's hot (20)

[DL Hacks]FPGA秘T
[DL Hacks]FPGA秘T
Deep Learning JP
?
1076: CUDAデバッグ?プロファイリング秘T
1076: CUDAデバッグ?プロファイリング秘T
NVIDIA Japan
?
檎艶糸庄壊の蒙罿隼醵歎酬┐砲弔い
檎艶糸庄壊の蒙罿隼醵歎酬┐砲弔い
Yuji Otani
?
iostat await svctm の かた、深え圭
iostat await svctm の かた、深え圭
i 会弥
?
仝徭蛍のとこでは咾けど´々をoくす devcontainer
仝徭蛍のとこでは咾けど´々をoくす devcontainer
Yuta Matsumura
?
‐Unite Tokyo 2019/HDRPコワクナイ HDRPで朕峺す弌トで互瞳|な啌騏惇
‐Unite Tokyo 2019/HDRPコワクナイ HDRPで朕峺す弌トで互瞳|な啌騏惇
UnityTechnologiesJapan002
?
遺顎永霞盾h
遺顎永霞盾h
Ryosuke Okuta
?
AlmaLinux と Rocky Linux のQ伏UΡ否^
AlmaLinux と Rocky Linux のQ伏UΡ否^
beyond Co., Ltd.
?
GitLab & web hooks & git-flowでgFする二I鬚gith廠のB
GitLab & web hooks & git-flowでgFする二I鬚gith廠のB
CROOZ, inc.
?
そろそろレガシ`な.鰻艶岳蝕kをやめなイカ
そろそろレガシ`な.鰻艶岳蝕kをやめなイカ
Yuta Matsumura
?
遺++による方ス睥の旺双晒返隈
遺++による方ス睥の旺双晒返隈
dc1394
?
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Masahito Zembutsu
?
皆河晦寄楚k佩I尖をいかにして互堀晒するか
皆河晦寄楚k佩I尖をいかにして互堀晒するか
Shogo Wakayama
?
PFNにおける冩梢_k2022/10/19 |寄寄僥垪仝蛮栽秤麪蒙evx‰々
PFNにおける冩梢_k2022/10/19 |寄寄僥垪仝蛮栽秤麪蒙evx‰々
Preferred Networks
?
ECCV2020 オ`ラル猟頼畠i篤 (2/2)
ECCV2020 オ`ラル猟頼畠i篤 (2/2)
cvpaper. challenge
?
艶京永酷は採か?耙しいのか
艶京永酷は採か?耙しいのか
Yutaro Hayakawa
?
[DLi氏]Deep High-Resolution Representation Learning for Human Pose Estimation
[DLi氏]Deep High-Resolution Representation Learning for Human Pose Estimation
Deep Learning JP
?
マルチコアを喘いた鮫I尖
マルチコアを喘いた鮫I尖
Norishige Fukushima
?
及 1 指 Jetson ユ`ザ`茶氏
及 1 指 Jetson ユ`ザ`茶氏
NVIDIA Japan
?
[DLi氏]Xception: Deep Learning with Depthwise Separable Convolutions
[DLi氏]Xception: Deep Learning with Depthwise Separable Convolutions
Deep Learning JP
?
1076: CUDAデバッグ?プロファイリング秘T
1076: CUDAデバッグ?プロファイリング秘T
NVIDIA Japan
?
檎艶糸庄壊の蒙罿隼醵歎酬┐砲弔い
檎艶糸庄壊の蒙罿隼醵歎酬┐砲弔い
Yuji Otani
?
iostat await svctm の かた、深え圭
iostat await svctm の かた、深え圭
i 会弥
?
仝徭蛍のとこでは咾けど´々をoくす devcontainer
仝徭蛍のとこでは咾けど´々をoくす devcontainer
Yuta Matsumura
?
‐Unite Tokyo 2019/HDRPコワクナイ HDRPで朕峺す弌トで互瞳|な啌騏惇
‐Unite Tokyo 2019/HDRPコワクナイ HDRPで朕峺す弌トで互瞳|な啌騏惇
UnityTechnologiesJapan002
?
AlmaLinux と Rocky Linux のQ伏UΡ否^
AlmaLinux と Rocky Linux のQ伏UΡ否^
beyond Co., Ltd.
?
GitLab & web hooks & git-flowでgFする二I鬚gith廠のB
GitLab & web hooks & git-flowでgFする二I鬚gith廠のB
CROOZ, inc.
?
そろそろレガシ`な.鰻艶岳蝕kをやめなイカ
そろそろレガシ`な.鰻艶岳蝕kをやめなイカ
Yuta Matsumura
?
遺++による方ス睥の旺双晒返隈
遺++による方ス睥の旺双晒返隈
dc1394
?
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Masahito Zembutsu
?
皆河晦寄楚k佩I尖をいかにして互堀晒するか
皆河晦寄楚k佩I尖をいかにして互堀晒するか
Shogo Wakayama
?
PFNにおける冩梢_k2022/10/19 |寄寄僥垪仝蛮栽秤麪蒙evx‰々
PFNにおける冩梢_k2022/10/19 |寄寄僥垪仝蛮栽秤麪蒙evx‰々
Preferred Networks
?
ECCV2020 オ`ラル猟頼畠i篤 (2/2)
ECCV2020 オ`ラル猟頼畠i篤 (2/2)
cvpaper. challenge
?
艶京永酷は採か?耙しいのか
艶京永酷は採か?耙しいのか
Yutaro Hayakawa
?
[DLi氏]Deep High-Resolution Representation Learning for Human Pose Estimation
[DLi氏]Deep High-Resolution Representation Learning for Human Pose Estimation
Deep Learning JP
?
及 1 指 Jetson ユ`ザ`茶氏
及 1 指 Jetson ユ`ザ`茶氏
NVIDIA Japan
?
[DLi氏]Xception: Deep Learning with Depthwise Separable Convolutions
[DLi氏]Xception: Deep Learning with Depthwise Separable Convolutions
Deep Learning JP
?

敷を托壤する┗焚盂抒鶸撚圓魴ヽ床艶糸する