<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python on the art of simplicity</title><link>https://naoko.github.io/tags/python/</link><description>Recent content in Python on the art of simplicity</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 12 Apr 2020 00:00:00 +0000</lastBuildDate><atom:link href="https://naoko.github.io/tags/python/index.xml" rel="self" type="application/rss+xml"/><item><title>Stanza - A Python NLP Library for Many Human Languages</title><link>https://naoko.github.io/posts/2020-04-12-stanza-/</link><pubDate>Sun, 12 Apr 2020 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2020-04-12-stanza-/</guid><description>&lt;p&gt;I tested out &lt;a href="https://stanfordnlp.github.io/stanza/"&gt;Stanza&lt;/a&gt;.
English tokenizer and definately works.
I ran quick test with Japanese lang and output was somewhat unexpected.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import stanza

# japanese &amp;#34;ja&amp;#34;, for english model &amp;#34;en&amp;#34;

stanza.download(&amp;#34;ja&amp;#34;)
nlp = stanza.Pipeline(&amp;#34;ja&amp;#34;)
doc = nlp(&amp;#34;皆さんおはようございます！　ご機嫌いかがですか？&amp;#34;)

for i, sentence in enumerate(doc.sentences):
 print(f&amp;#34;===== Sentence {i+1} tokens =====&amp;#34;)
 print(*[f&amp;#34;word: {word.text}\t upos: {word.upos} xpos: {word.xpos}&amp;#34; for word in sentence.words], sep=&amp;#34;\n&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The output is:&lt;/p&gt;</description></item><item><title>Install GraalVM and run ptyhon with debugger</title><link>https://naoko.github.io/posts/2019-04-14-graalvm-started/</link><pubDate>Sun, 14 Apr 2019 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2019-04-14-graalvm-started/</guid><description>&lt;h3 id="what-is-graalvm"&gt;What is GraalVM?&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;GraalVM is a high-performance, embeddable, polyglot virtual machine for running
applications written in JavaScript, Python, Ruby, R,
JVM-based languages like Java, Scala, Kotlin, and LLVM-based languages such as C and C++.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here is the &lt;a href="https://www.graalvm.org/docs/"&gt;Official doc link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hmm&amp;hellip; Okay, I have to see it.&lt;/p&gt;
&lt;h3 id="lets-install"&gt;Let&amp;rsquo;s install&lt;/h3&gt;
&lt;p&gt;Below is the way I installed GraalVM Community Edition on Ubuntu 18.04.
For other platform, the official doc installation
guide is &lt;a href="https://www.graalvm.org/docs/getting-started/#install-graalvm"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# update this number to latest version from here: https://github.com/oracle/graal/releases&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;1.0.0-rc15
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://github.com/oracle/graal/releases/download/vm-&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;/graalvm-ce-&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;-linux-amd64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -xvzf graalvm-ce-&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;-linux-amd64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# clean up&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rm graalvm-ce-&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;-linux-amd64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# to wherever you want. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mv graalvm-ce-1.0.0-rc15/ ~/bin/graalvm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# if you want to make it permanent, put this in your bashrc &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;export&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;PATH&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$HOME&lt;/span&gt;/graalvm/bin:&lt;span style="color:#8be9fd;font-style:italic"&gt;$PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that your graalvm/bin in your path, you&amp;rsquo;ll get the GraalVM versions of those runtimes.&lt;/p&gt;</description></item><item><title>Install Python on Ubuntu</title><link>https://naoko.github.io/posts/2018-10-15-how-to-install-python-ubuntu/</link><pubDate>Mon, 15 Oct 2018 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2018-10-15-how-to-install-python-ubuntu/</guid><description>&lt;p&gt;Check the latest version &lt;a href="https://www.python.org/"&gt;here&lt;/a&gt;
At the time of writing, 3.8.0 is the latest and 3.8.5 has release candidate.&lt;/p&gt;
&lt;p&gt;Also make sure you have sqlite3, libbz2-dev and libffi-dev are installed&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get install libsqlite3-dev libbz2-dev libffi-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;3.8.5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://www.python.org/ftp/python/&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;/Python-&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xzvf Python-&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;cd&lt;/span&gt; Python-&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;version&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Linux (or any Unix-like system), the default prefix and exec-prefix are /usr/local.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# thus you should be able to omit --prefix here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# --enable-optimizations option for significant speed boost (10-20%) but much&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# slower build process&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./configure --prefix /usr/local --enable-optimizations
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# OR if you want to skip creating the python link then:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo make altinstall
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;in case you want to remove and re-install it again cause some software
was missing before installation&lt;/p&gt;</description></item><item><title>Intercept Python Logging</title><link>https://naoko.github.io/posts/2018-07-26-intercept-python-logging/</link><pubDate>Thu, 26 Jul 2018 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2018-07-26-intercept-python-logging/</guid><description>&lt;h3 id="the-problem"&gt;The problem:&lt;/h3&gt;
&lt;p&gt;I need to ship specific log record and had formatter written in python.
It is pretty complex transformation.&lt;/p&gt;
&lt;p&gt;I thought of using Logstash but I then need to either convert this python logic or write a plugin
to use already written python parser. Plus I need to install logstash&amp;hellip;
I wanted a simpler solution&lt;/p&gt;
&lt;h3 id="how-to-solve-it"&gt;How to solve it&lt;/h3&gt;
&lt;p&gt;Use custom python logging Handler and Filter!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; logging
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;messages &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logger &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;getLogger(&lt;span style="color:#8be9fd;font-style:italic"&gt;__name__&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setLevel(logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;DEBUG)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;ListenFilter&lt;/span&gt;(logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Filter):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;filter&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, record):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&amp;#34;Determine which log records to output.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt; Returns 0 for no, nonzero for yes.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; record&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;getMessage()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;startswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;dont: &amp;#39;&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;RequestsHandler&lt;/span&gt;(logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Handler):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;emit&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, record):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&amp;#34;Send the log records (created by loggers) to
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt; the appropriate destination.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messages&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(record&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;getMessage())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;handler &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; RequestsHandler()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;addHandler(handler)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;filter_ &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ListenFilter()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;addFilter(filter_)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# log I want&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;&amp;#34;logme: Howdy!&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# log i want to skip&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;&amp;#34;dont: I&amp;#39;m doing great!&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# prints [&amp;#39;logme: Howdy!&amp;#39;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(messages)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cheers!&lt;/p&gt;</description></item><item><title>Python Project Install - develop vs install &amp; setuptools vs pip</title><link>https://naoko.github.io/posts/2018-03-05-your-project-install-pip-setup/</link><pubDate>Mon, 05 Mar 2018 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2018-03-05-your-project-install-pip-setup/</guid><description>&lt;h3 id="the-problem"&gt;The problem:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I don&amp;rsquo;t understand the difference between &lt;code&gt;setup.py develop&lt;/code&gt; and &lt;code&gt;setup.py install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I don&amp;rsquo;t understand the difference between &lt;code&gt;setup.py develop&lt;/code&gt; and &lt;code&gt;pip install -e [dir]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I don&amp;rsquo;t see the changes to my code when I import my code&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="the-difference-between-setuppy-develop-and-setuppy-install"&gt;The difference between &lt;code&gt;setup.py develop&lt;/code&gt; and &lt;code&gt;setup.py install&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;In short, you want to run &lt;code&gt;setup.py develop&lt;/code&gt; when you are editing code because when you run
&lt;code&gt;setup.py install&lt;/code&gt;, it will copy your code into &lt;code&gt;site-packages&lt;/code&gt; thus if you want to test your
latest code you will need to &lt;code&gt;install&lt;/code&gt; (copy) again. On the other hand, with &lt;code&gt;develop&lt;/code&gt;, it creates
a link to your source code so that when you import your code, it is your latest code.&lt;/p&gt;</description></item><item><title>No Space Left Error when pip install</title><link>https://naoko.github.io/posts/2017-12-26-pip-install-no-space-left/</link><pubDate>Tue, 26 Dec 2017 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2017-12-26-pip-install-no-space-left/</guid><description>&lt;h3 id="the-problem"&gt;The Problem:&lt;/h3&gt;
&lt;p&gt;Got&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OSError: &lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;Errno 28&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt; No space left on device
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When your home directory where your virtual environment located
has more than enough space&amp;hellip;&lt;/p&gt;
&lt;h3 id="why"&gt;Why?:&lt;/h3&gt;
&lt;p&gt;The culprit is likely that your &lt;code&gt;/tmp&lt;/code&gt; directory do not have enough space for
some reason.
During the pip installation, pip will use temporarily directory
to perform what is necessary to perform installation (e.g. download source etc).
Thus if you do not have enough space in &lt;code&gt;/tmp&lt;/code&gt; that package installation requires then
you will get disk space error.&lt;/p&gt;</description></item></channel></rss>