

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Installation</title>
    <meta name="description" content="Project Community Page">
    <meta name="author" content="">

    <!-- Enable responsive viewport -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- Le styles -->
    <link href="/assets/themes/apache/bootstrap/css/bootstrap.css" rel="stylesheet">
    <link href="/assets/themes/apache/css/style.css?body=1" rel="stylesheet" type="text/css">
    <link href="/assets/themes/apache/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" />
    <!-- Le fav and touch icons -->
    <link rel="shortcut icon" href="/assets/themes/apache/img/icon.png">
    <!-- Update these with your own images
      <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
      <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
      <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
    -->

  </head>

  <body>

    
    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="/">
            <img src="/assets/themes/apache/img/logo_white.png" width="80">
          </a>
        </div>
        <nav class="navbar-collapse collapse" role="navigation">
          <ul class="nav navbar-nav navbar-right">
            <li id="community">
              <a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a>
               <ul class="dropdown-menu">
                <li><a href="/community">Get Involved</a></li>
                <li><a href="/community-members">Who we are</a></li>
               </ul>
            </li>
            <li><a href="/news">News</a></li>
            <li><a href="/marvin-platform-book/SUMMARY">Document</a></li>
            <li><a href="https://github.com/apache/incubator-marvin">GitHub</a></li>
            <li id="apache">
              <a href="#" data-toggle="dropdown" class="dropdown-toggle">Apache<b class="caret"></b></a>
               <ul class="dropdown-menu">
                <li><a href="http://www.apache.org/foundation/how-it-works.html">Apache Software Foundation</a></li>
                <li><a href="http://www.apache.org/licenses/">Apache License</a></li>
                <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                </ul>
            </li>
          </ul>
        </nav>
      </div>
    </div>

    


    <div class="container">
      


<div class="row">
  <div class="col-md-12">
    <!--

-->

<h1 id="installing-toolbox-as-macos-user">Installing Toolbox as MacOS user</h1>

<ol>
  <li>Toolbox will need some OS dependencies</li>
</ol>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo easy_install pip
brew install openssl graphviz
</code></pre></div></div>

<ol>
  <li>We strongly recommend the use of VirtualEnv and VirtualEnvWrapper</li>
</ol>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo pip install --upgrade pip
sudo pip install virtualenvwrapper --ignore-installed six
</code></pre></div></div>

<ol>
  <li>Spark installation (<strong>Optional</strong>)</li>
</ol>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl https://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.6.tgz -o /tmp/spark-2.1.1-bin-hadoop2.6.tgz
sudo tar -xf /tmp/spark-2.1.1-bin-hadoop2.6.tgz -C /opt/
sudo ln -s /opt/spark-2.1.1-bin-hadoop2.6 /opt/spark
echo "export SPARK_HOME=/opt/spark" &gt;&gt; $HOME/.bash_profile
</code></pre></div></div>

<p>If you do not have /opt directory created, before unpacking spark, run:</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo mkdir /opt
</code></pre></div></div>

<ol>
  <li>Marvin uses dafault values for these environment variables, but you can customize them (<strong>Optional</strong>)</li>
</ol>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>echo "export WORKON_HOME=$HOME/.virtualenvs" &gt;&gt; $HOME/.bash_profile
echo "export MARVIN_HOME=$HOME/marvin" &gt;&gt; $HOME/.bash_profile
echo "export MARVIN_DATA_PATH=$HOME/marvin/data" &gt;&gt; $HOME/.bash_profile
echo "source virtualenvwrapper.sh" &gt;&gt; $HOME/.bash_profile
source ~/.bash_profile
</code></pre></div></div>

<ol>
  <li>Install python-toolbox</li>
</ol>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkvirtualenv python-toolbox-env
setvirtualenvproject
pip install marvin-python-toolbox
</code></pre></div></div>

<ol>
  <li>Test the installation</li>
</ol>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>marvin
</code></pre></div></div>

<ol>
  <li>Youtube tutorial</li>
</ol>

<p><a href="https://www.youtube.com/watch?v=2iljFG9EZ_Q" title="Python Toolbox Install"><img src="http://img.youtube.com/vi/2iljFG9EZ_Q/0.jpg" alt="Python Toolbox Install" /></a></p>

<hr />

<ul>
  <li><a href="/marvin-platform-book/ch2_toolbox_installation/overview">Installing Marvin</a></li>
</ul>

  </div>
</div>


      <hr>
      <footer>
        <footer class="site-footer">
    <div class="wrapper">
        <div class="footer-col-wrapper">
            
            Apache Marvin-AI is an effort undergoing <a href="https://incubator.apache.org/index.html">Incubation</a>
            at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly
            accepted projects until a further review indicates that the infrastructure, communications, and decision
            making process have stabilized in a manner consistent with other successful ASF projects. While incubation
            status is not necessarily a reflection of the completeness or stability of the code, it does indicate that
            the project has yet to be fully endorsed by the ASF.
            <hr>
            
            <div style="text-align:center;">
                
                <div style="margin-top: 20px; margin-bottom: 20px;">
                    <a href="http://incubator.apache.org"><img src="/assets/themes/apache/img/egg-logo.png"
                                                               alt="Apache Incubator"/></a>
                </div>
                
                <div>
                    Copyright &copy; 2016 <a href="http://www.apache.org">The Apache Software Foundation</a>.
                    Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
                    2.0</a>.
                    <br>
                    
                    Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache
                    Software Foundation.
                    
                </div>
            </div>
        </div>
    </div>
</footer>

      </footer>
    </div>

    
    <script src="/assets/themes/apache/jquery/jquery-2.1.1.min.js"></script>

    <script src="/assets/themes/apache/bootstrap/js/bootstrap.min.js"></script>


  </body>
</html>

