{"id":1339,"date":"2018-11-19T18:01:51","date_gmt":"2018-11-19T10:01:51","guid":{"rendered":"https:\/\/www.techcoil.com\/blog\/?p=1339"},"modified":"2018-11-19T14:56:32","modified_gmt":"2018-11-19T06:56:32","slug":"how-to-setup-jupyter-notebook-on-ubuntu-16-04-of-your-nvidia-jetson-tx2-developer-kit","status":"publish","type":"post","link":"https:\/\/www.techcoil.com\/blog\/how-to-setup-jupyter-notebook-on-ubuntu-16-04-of-your-nvidia-jetson-tx2-developer-kit\/","title":{"rendered":"How to setup Jupyter Notebook on Ubuntu 16.04 of your Nvidia Jetson TX2 developer kit"},"content":{"rendered":"<p>When you want to quickly test out your machine learning algorithm, you can create Python 3 notebooks via <a href=\"http:\/\/jupyter.org\/\" rel=\"noopener\" target=\"_blank\">Jupyter Notebook<\/a>.<\/p>\n<p>Therefore, Jupyter Notebook is one of the things that you may want to setup after <a href=\"https:\/\/www.techcoil.com\/blog\/getting-started-with-an-nvidia-jetson-tx2-developer-kit\/\" rel=\"noopener\" target=\"_blank\">getting started with your Nvidia Jetson TX2 developer kit<\/a>.<\/p>\n<p>With this in mind, this post shows how to setup Jupyter Notebook on Ubuntu 16.04 of your <a href=\"https:\/\/www.amazon.com\/NVIDIA-945-82771-0000-000-Jetson-TX2-Development\/dp\/B06XPFH939\/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=clivsperswebs-20&linkId=6cd41f7c11debace9a3997fd4b9a3e48&language=en_US\" rel=\"noopener\" target=\"_blank\">Nvidia Jetson TX2 developer kit<\/a>.<\/p>\n<h2>Installing python3-venv and python3-dev on Ubuntu 16.04<\/h2>\n<p>After you had logged into Ubuntu 16.04 with the <code>nvidia<\/code> user, start an instance of the terminal program. After a terminal program instance had started, install <a href=\"https:\/\/docs.python.org\/3\/library\/venv.html\" rel=\"noopener\" target=\"_blank\"><code>python3-venv<\/code><\/a> and <code>python3-dev<\/code> with the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo apt-get install python3-venv python3-dev -y\r\n<\/pre>\n<h2>Creating a virtual environment for your Jupyter Notebook on Ubuntu 16.04 of your Nvidia Jetson TX2 developer kit<\/h2>\n<p>After you had installed <code>python3-venv<\/code>, you will be able to run the <a href=\"https:\/\/docs.python.org\/3\/library\/venv.html\" rel=\"noopener\" target=\"_blank\">venv module<\/a> with the <code>python3<\/code> binary. With this in mind, you can then create a virtual environment for running your Jupyter Notebook on Ubuntu 16.04 of your Nvidia Jetson TX2 developer kit. In order to do so, run the following commands in the terminal window:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmkdir ~\/jupyter\/\r\npython3 -m venv ~\/jupyter\/jupyter-env\r\n<\/pre>\n<h2>Upgrading your pip version of your virtual environment<\/h2>\n<p>Once you had created the virtual environment, activate the virtual environment within the terminal window:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsource ~\/jupyter\/jupyter-env\/bin\/activate\r\n<\/pre>\n<p>After your virtual environment had been activated, run the following command to upgrade the <a href=\"https:\/\/pypi.org\/project\/pip\/\" rel=\"noopener\" target=\"_blank\">pip<\/a> version of your virtual environment:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\npip install --upgrade pip\r\n<\/pre>\n<h2>Installing Jupyter Notebook into the virtual environment<\/h2>\n<p>Once you had upgraded the pip version of your virtual environment, you can proceed with installing Jupyter Notebook and its dependencies into the virtual environment.<\/p>\n<h3>Setting up zeromq in Ubuntu 16.04<\/h3>\n<p>When you install Jupyter Notebook right away, you may encounter the following error message:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n    Using bundled libzmq\r\n    already have bundled\/zeromq\r\n    attempting .\/configure to generate platform.hpp\r\n    Warning: failed to configure libzmq:\r\n    b'\/bin\/sh: 1: .\/configure: not found\\n'\r\n    staging platform.hpp from: \/tmp\/pip-install-7b2xfn81\/pyzmq\/buildutils\/include_linux\r\n    ************************************************\r\n    checking for timer_create\r\n    creating build\/temp.linux-aarch64-3.5\/tmp\r\n    aarch64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -c \/tmp\/timer_create__sd0z0x.c -o build\/temp.linux-aarch64-3.5\/tmp\/timer_create__sd0z0x.o\r\n    \/tmp\/timer_create__sd0z0x.c:1:1: warning: return type defaults to \u2018int\u2019 &#x5B;-Wimplicit-int]\r\n     main (int argc, char **argv) {\r\n     ^\r\n    \/tmp\/timer_create__sd0z0x.c: In function \u2018main\u2019:\r\n    \/tmp\/timer_create__sd0z0x.c:2:5: warning: implicit declaration of function \u2018timer_create\u2019 &#x5B;-Wimplicit-function-declaration]\r\n         timer_create();\r\n         ^\r\n    aarch64-linux-gnu-gcc -pthread build\/temp.linux-aarch64-3.5\/tmp\/timer_create__sd0z0x.o -o build\/temp.linux-aarch64-3.5\/a.out\r\n    build\/temp.linux-aarch64-3.5\/tmp\/timer_create__sd0z0x.o: In function `main':\r\n    \/tmp\/timer_create__sd0z0x.c:2: undefined reference to `timer_create'\r\n    collect2: error: ld returned 1 exit status\r\n    no timer_create, linking librt\r\n    ************************************************\r\n    building 'zmq.libzmq' extension\r\n    creating build\/temp.linux-aarch64-3.5\/buildutils\r\n    creating build\/temp.linux-aarch64-3.5\/bundled\r\n    creating build\/temp.linux-aarch64-3.5\/bundled\/zeromq\r\n    creating build\/temp.linux-aarch64-3.5\/bundled\/zeromq\/src\r\n    aarch64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DZMQ_HAVE_CURVE=1 -DZMQ_USE_TWEETNACL=1 -DZMQ_USE_EPOLL=1 -Ibundled\/zeromq\/include -Ibundled -I\/home\/nvidia\/jupyter\/jupyter-env\/include -I\/usr\/include\/python3.5m -c buildutils\/initlibzmq.c -o build\/temp.linux-aarch64-3.5\/buildutils\/initlibzmq.o\r\n    aarch64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DZMQ_HAVE_CURVE=1 -DZMQ_USE_TWEETNACL=1 -DZMQ_USE_EPOLL=1 -Ibundled\/zeromq\/include -Ibundled -I\/home\/nvidia\/jupyter\/jupyter-env\/include -I\/usr\/include\/python3.5m -c bundled\/zeromq\/src\/tipc_address.cpp -o build\/temp.linux-aarch64-3.5\/bundled\/zeromq\/src\/tipc_address.o\r\n    cc1plus: warning: command line option \u2018-Wstrict-prototypes\u2019 is valid for C\/ObjC but not for C++\r\n    aarch64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DZMQ_HAVE_CURVE=1 -DZMQ_USE_TWEETNACL=1 -DZMQ_USE_EPOLL=1 -Ibundled\/zeromq\/include -Ibundled -I\/home\/nvidia\/jupyter\/jupyter-env\/include -I\/usr\/include\/python3.5m -c bundled\/zeromq\/src\/socket_poller.cpp -o build\/temp.linux-aarch64-3.5\/bundled\/zeromq\/src\/socket_poller.o\r\n    cc1plus: warning: command line option \u2018-Wstrict-prototypes\u2019 is valid for C\/ObjC but not for C++\r\n    In file included from bundled\/zeromq\/src\/ypipe.hpp:33:0,\r\n                     from bundled\/zeromq\/src\/mailbox.hpp:39,\r\n                     from bundled\/zeromq\/src\/ctx.hpp:38,\r\n                     from bundled\/zeromq\/src\/epoll.hpp:40,\r\n                     from bundled\/zeromq\/src\/poller.hpp:42,\r\n                     from bundled\/zeromq\/src\/socket_poller.hpp:33,\r\n                     from bundled\/zeromq\/src\/socket_poller.cpp:31:\r\n    bundled\/zeromq\/src\/atomic_ptr.hpp: In member function \u2018int zmq::atomic_value_t::load() const\u2019:\r\n    bundled\/zeromq\/src\/atomic_ptr.hpp:269:46: error: binding \u2018const zmq::mutex_t\u2019 to reference of type \u2018zmq::mutex_t&amp;\u2019 discards qualifiers\r\n                                                  sync\r\n                                                  ^\r\n    bundled\/zeromq\/src\/atomic_ptr.hpp:116:14: note:   initializing argument 4 of \u2018void* zmq::atomic_cas(void* volatile*, void*, void*, zmq::mutex_t&amp;)\u2019\r\n     inline void *atomic_cas (void *volatile *ptr_,\r\n                  ^\r\n    error: command 'aarch64-linux-gnu-gcc' failed with exit status 1\r\n    \r\n    ----------------------------------------\r\nCommand &quot;\/home\/nvidia\/jupyter\/jupyter-env\/bin\/python3 -u -c &quot;import setuptools, tokenize;__file__='\/tmp\/pip-install-7b2xfn81\/pyzmq\/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\\r\\n', '\\n');f.close();exec(compile(code, __file__, 'exec'))&quot; install --record \/tmp\/pip-record-g8qe7o43\/install-record.txt --single-version-externally-managed --compile --install-headers \/home\/nvidia\/jupyter\/jupyter-env\/include\/site\/python3.5\/pyzmq&quot; failed with error code 1 in \/tmp\/pip-install-7b2xfn81\/pyzmq\/\r\n<\/pre>\n<p>Therefore, run the following commands to <a href=\"https:\/\/gist.github.com\/katopz\/8b766a5cb0ca96c816658e9407e83d00\" rel=\"noopener\" target=\"_blank\">setup zeromq on Ubuntu 16.04<\/a> before installing Jupyter again:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n# Download zeromq\r\n# Ref http:\/\/zeromq.org\/intro:get-the-software\r\nwget https:\/\/github.com\/zeromq\/libzmq\/releases\/download\/v4.2.2\/zeromq-4.2.2.tar.gz\r\n\r\n# Unpack tarball package\r\ntar xvzf zeromq-4.2.2.tar.gz\r\n\r\n# Install dependency\r\nsudo apt-get update &amp;&amp; \\\r\nsudo apt-get install -y libtool pkg-config build-essential autoconf automake uuid-dev\r\n\r\n# Create make file\r\ncd zeromq-4.2.2\r\n.\/configure\r\n\r\n# Build and install(root permission only)\r\nsudo make install\r\n\r\n# Install zeromq driver on linux\r\nsudo ldconfig\r\n<\/pre>\n<p>After that, run the following command to install a copy of Jupyter Notebook into the virtual environment:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\npip install jupyter\r\n<\/pre>\n<p>When the installation had completed, you will then be able to run Jupyter notebook with the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\njupyter notebook\r\n<\/pre>\n<h2>Running Jupyter Notebook as a server daemon<\/h2>\n<p>At this point in time, each time you restart your Nvidia Jetson TX2 developer kit, you will need to activate your virtual environment and start your Jupyter Notebook. In order to make Jupyter Notebook run whenever you start your Nvidia Jetson TX2 developer kit, you need to run it as a server daemon.<\/p>\n<h3>Installing Supervisor on your Ubuntu 16.04 of your Nvidia Jetson TX2 developer kit<\/h3>\n<p><a href=\"http:\/\/supervisord.org\/\">Supervisor<\/a> is a convenient tool for running an application as a server daemon. Therefore, you can use it to keep an instance of Jupyter Notebook running as a server daemon on your Ubuntu 16.04.<\/p>\n<p>In order to use Supervisor on Ubuntu 16.04, you will need to run the following command to install it:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo apt-get install supervisor -y\r\n<\/pre>\n<p>After the installation had completed, you can verify your installation with the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsystemctl status supervisor.service\r\n<\/pre>\n<p>When Supervisor is installed successfully, you should see output similar to the following:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\u25cf supervisor.service - Supervisor process control system for UNIX\r\n   Loaded: loaded (\/lib\/systemd\/system\/supervisor.service; enabled; vendor preset: enabled)\r\n   Active: active (running) since Sun 2018-11-18 09:39:02 UTC; 13min ago\r\n     Docs: http:\/\/supervisord.org\r\n Main PID: 15567 (supervisord)\r\n   CGroup: \/system.slice\/supervisor.service\r\n           \u2514\u250015567 \/usr\/bin\/python \/usr\/bin\/supervisord -n -c \/etc\/supervisor\/supervisord.conf\r\n\r\nNov 18 09:39:02 tegra-ubuntu systemd&#x5B;1]: Started Supervisor process control system for UNIX.\r\nNov 18 09:39:03 tegra-ubuntu supervisord&#x5B;15567]: 2018-11-18 09:39:03,264 CRIT Supervisor running as root (no user in \r\nNov 18 09:39:03 tegra-ubuntu supervisord&#x5B;15567]: 2018-11-18 09:39:03,264 WARN No file matches via include &quot;\/etc\/super\r\nNov 18 09:39:03 tegra-ubuntu supervisord&#x5B;15567]: 2018-11-18 09:39:03,290 INFO RPC interface 'supervisor' initialized\r\nNov 18 09:39:03 tegra-ubuntu supervisord&#x5B;15567]: 2018-11-18 09:39:03,290 CRIT Server 'unix_http_server' running witho\r\nNov 18 09:39:03 tegra-ubuntu supervisord&#x5B;15567]: 2018-11-18 09:39:03,290 INFO supervisord started with pid 15567\r\n<\/pre>\n<h2>Creating a directory to keep your Jupyter Notebook documents<\/h2>\n<p>Once you had installed Supervisor, you can proceed with creating a directory to keep your Jupyter Notebook documents. For example, you can run the following command to create the <code>contents<\/code> directory inside the <code>~\/jupyter<\/code> directory:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmkdir ~\/jupyter\/contents\r\n<\/pre>\n<h2>Creating a shell script to run Jupyter Notebook within the virtual environment<\/h2>\n<p>Next, proceed to create a shell script to run Jupyter Notebook. In order to do so, run the following command to create a shell script at <code>~\/jupyter\/run-jupyter-notebook.sh<\/code>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nvi ~\/jupyter\/run-jupyter-notebook.sh\r\n<\/pre>\n<p>When the editor loads, create the following content:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n#!\/bin\/bash\r\nsource \/home\/nvidia\/jupyter\/jupyter-env\/bin\/activate\r\njupyter notebook --ip 0.0.0.0 --port 9999 --no-browser\r\ndeactivate\r\n<\/pre>\n<p>After you had done so, press <strong>Esc<\/strong> followed by <strong>:wq<\/strong> to save the file. Once you had saved the file, make the file executable by running the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nchmod +x ~\/jupyter\/run-jupyter-notebook.sh\r\n<\/pre>\n<h2>Creating the Supervisor configuration file to run Jupyter Notebook<\/h2>\n<p>In order to get Supervisor to run Jupyter Notebook, you will need to create a Supervisor configuration file. Run the following command to create a configuration file at <code>\/etc\/supervisor\/conf.d\/jupyter-notebook.conf<\/code>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo vi \/etc\/supervisor\/conf.d\/jupyter-notebook.conf\r\n<\/pre>\n<p>Once the editor appears, create the following content:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B;program:jupyter-notebook]\r\ndirectory=\/home\/nvidia\/jupyter\/contents\r\ncommand=\/bin\/bash -E -c ..\/run-jupyter-notebook.sh\r\nautostart=true\r\nautorestart=true\r\nstopsignal=INT\r\nstopasgroup=true\r\nkillasgroup=true\r\nuser=nvidia\r\n<\/pre>\n<p>After you had done so, press <strong>Esc<\/strong> followed by <strong>:wq<\/strong> to save the file.<\/p>\n<p>Once you had saved <code>\/etc\/supervisor\/conf.d\/jupyter-notebook.conf<\/code>, run the following command to restart Supervisor:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo systemctl restart supervisor.service\r\n<\/pre>\n<p>When Supervisor had restarted successfully, it will run your Jupyter Notebook for you.<\/p>\n<h2>Accessing Jupyter Notebook for the first time<\/h2>\n<p>When you access Jupyter Notebook for the first time, you need to provide a token that Jupyter Notebook had generated.<\/p>\n<p>In order to get the token, get into <code>supervisorctl<\/code> with the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo supervisorctl\r\n<\/pre>\n<p>And inside <code>supervisorctl<\/code>, print the log generated by Jupyter Notebook by running the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntail jupyter-notebook stdout\r\n<\/pre>\n<p>When the command runs, output similar to the following will appear:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n&#x5B;I 10:36:27.067 NotebookApp] Writing notebook server cookie secret to \/home\/nvidia\/.local\/share\/jupyter\/runtime\/notebook_cookie_secret\r\n&#x5B;I 10:36:27.679 NotebookApp] Serving notebooks from local directory: \/home\/nvidia\/jupyter\r\n&#x5B;I 10:36:27.681 NotebookApp] The Jupyter Notebook is running at:\r\n&#x5B;I 10:36:27.682 NotebookApp] http:\/\/(tegra-ubuntu or 127.0.0.1):9999\/?token=cf8b7b5c3bece2cb2fd05dfc129befd81bc4ee6bbc39a988\r\n&#x5B;I 10:36:27.682 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).\r\n&#x5B;C 10:36:27.688 NotebookApp] \r\n    \r\n    Copy\/paste this URL into your browser when you connect for the first time,\r\n    to login with a token:\r\n        http:\/\/(tegra-ubuntu or 127.0.0.1):9999\/?token=cf8b7b5c3bece2cb2fd05dfc129befd81bc4ee6bbc39a988\r\n<\/pre>\n<p>Once you see the output, follow the instructions of the last paragraph to access your Jupyter Notebook for the first time. For example, we can access the Jupyter Notebook in this post via <code>http:\/\/127.0.0.1:9999\/?token=cf8b7b5c3bece2cb2fd05dfc129befd81bc4ee6bbc39a988<\/code>:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.techcoil.com\/blog\/wp-content\/uploads\/Accessing-Jupyter-Notebook-for-the-first-time-on-Ubuntu-16.04-running-on-Nvidia-Jetson-TX2-developer-kit.jpg\" alt=\"Accessing Jupyter Notebook for the first time on Ubuntu 16.04 running on Nvidia Jetson TX2 developer kit\" \/><\/p>\n\n      <ul id=\"social-sharing-buttons-list\">\n        <li class=\"facebook\">\n          <a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fwp.me%2Fp245TQ-lB\" target=\"_blank\" role=\"button\" rel=\"nofollow\">\n            <img decoding=\"async\" src=\"\/ph\/img\/3rd-party\/social-icons\/Facebook.png\" alt=\"Facebook icon\"> Share\n          <\/a>\n        <\/li>\n        <li class=\"twitter\">\n          <a href=\"https:\/\/twitter.com\/intent\/tweet?text=&url=https%3A%2F%2Fwp.me%2Fp245TQ-lB&via=Techcoil_com\" target=\"_blank\" role=\"button\" rel=\"nofollow\">\n          <img decoding=\"async\" src=\"\/ph\/img\/3rd-party\/social-icons\/Twitter.png\" alt=\"Twitter icon\"> Tweet\n          <\/a>\n        <\/li>\n        <li class=\"linkedin\">\n          <a href=\"https:\/\/www.linkedin.com\/shareArticle?mini=1&title=&url=https%3A%2F%2Fwp.me%2Fp245TQ-lB&source=https:\/\/www.techcoil.com\" target=\"_blank\" role=\"button\" rel=\"nofollow\">\n          <img decoding=\"async\" src=\"\/ph\/img\/3rd-party\/social-icons\/linkedin.png\" alt=\"Linkedin icon\"> Share\n          <\/a>\n        <\/li>\n        <li class=\"pinterest\">\n          <a href=\"https:\/\/pinterest.com\/pin\/create\/button\/?url=https%3A%2F%2Fwww.techcoil.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1339&description=\" class=\"pin-it-button\" target=\"_blank\" role=\"button\" rel=\"nofollow\" count-layout=\"horizontal\">\n          <img decoding=\"async\" src=\"\/ph\/img\/3rd-party\/social-icons\/Pinterest.png\" alt=\"Pinterest icon\"> Save\n          <\/a>\n        <\/li>\n      <\/ul>\n    ","protected":false},"excerpt":{"rendered":"<p>When you want to quickly test out your machine learning algorithm, you can create Python 3 notebooks via <a href=\"http:\/\/jupyter.org\/\" rel=\"noopener\" target=\"_blank\">Jupyter Notebook<\/a>.<\/p>\n<p>Therefore, Jupyter Notebook is one of the things that you may want to setup after <a href=\"https:\/\/www.techcoil.com\/blog\/getting-started-with-an-nvidia-jetson-tx2-developer-kit\/\" rel=\"noopener\" target=\"_blank\">getting started with your Nvidia Jetson TX2 developer kit<\/a>.<\/p>\n<p>With this in mind, this post shows how to setup Jupyter Notebook on Ubuntu 16.04 of your <a href=\"https:\/\/www.amazon.com\/NVIDIA-945-82771-0000-000-Jetson-TX2-Development\/dp\/B06XPFH939\/ref=as_li_ss_tl?ie=UTF8&#038;linkCode=ll1&#038;tag=clivsperswebs-20&#038;linkId=6cd41f7c11debace9a3997fd4b9a3e48&#038;language=en_US\" rel=\"noopener\" target=\"_blank\">Nvidia Jetson TX2 developer kit<\/a>.<\/p>\n","protected":false},"author":1,"featured_media":1385,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"footnotes":""},"categories":[4],"tags":[558,585,559,226,233,195,438,224,587],"jetpack_featured_media_url":"https:\/\/www.techcoil.com\/blog\/wp-content\/uploads\/Accessing-Jupyter-Notebook-for-the-first-time-on-Ubuntu-16.04-running-on-Nvidia-Jetson-TX2-developer-kit.jpg","jetpack_shortlink":"https:\/\/wp.me\/p245TQ-lB","jetpack-related-posts":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/posts\/1339"}],"collection":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/comments?post=1339"}],"version-history":[{"count":0,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/posts\/1339\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/media\/1385"}],"wp:attachment":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/media?parent=1339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/categories?post=1339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/tags?post=1339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}