| As usual with extensions, you are not using Python anymore, but a compiled language. To get 100% certainty, you'd need to compile the whole thing. That being said, a lot of extensions are pre-compiled and provided as wheel, which is the case for tensorflow (I don't know for CUDA, I can't test on a laptop without a GPU). Let's see what this means: $ py -m venv test
$ test\Scripts\activate
$ pip install tensorflow
$ code hello_tensor.py
# import tensorflow as tf
# def main():
# with tf.compat.v1.Session() as sess:
# a = tf.constant(3.0)
# b = tf.constant(4.0)
# c = a+b
# print(sess.run(c))
Now with shiv: $ copy hello_tensor.py test\Lib\site-packages
$ shiv -e hello_tensor.main --site-packages test\Lib\site-packages\ -o hello_tensor.pyz
$ python hello_tensor.pyz
...
2020-05-28 17:31:46.580704: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
7.0
So it works fine, but remember:- it will only run on the system this particular wheel has been designed to run on. In my case cp38-win_amd64. - it will come bundled with tensorflow, which is a behemot, meaning your hello world pyz will around 500 Mo. - it needs to unzip, so the first run will be REALLY slow For something like this, I would advice a more generic deployment tool, like fabric 2 if it's remote, or a make-like tool such as doit if it's local only. Make your deployment script, and zipapp that. |