"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[3462],{15680:(e,n,t)=>{t.d(n,{xA:()=>u,yg:()=>c});var a=t(96540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=a.createContext({}),s=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=s(e.components);return a.createElement(p.Provider,{value:n},e.children)},d="mdxType",y={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},g=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=s(t),g=r,c=d["".concat(p,".").concat(g)]||d[g]||y[g]||i;return t?a.createElement(c,l(l({ref:n},u),{},{components:t})):a.createElement(c,l({ref:n},u))}));function c(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=g;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o[d]="string"==typeof e?e:r,l[1]=o;for(var s=2;s<i;s++)l[s]=t[s];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}g.displayName="MDXCreateElement"},30656:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>l,default:()=>y,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=t(58168),r=(t(96540),t(15680));const i={title:"Installing from PyPI",hide_title:!0,sidebar_position:2,version:1},l=void 0,o={unversionedId:"installation/installing-superset-from-pypi",id:"installation/installing-superset-from-pypi",title:"Installing from PyPI",description:"Installing Superset from PyPI",source:"@site/docs/installation/installing-superset-from-pypi.mdx",sourceDirName:"installation",slug:"/installation/installing-superset-from-pypi",permalink:"/docs/installation/installing-superset-from-pypi",draft:!1,editUrl:"https://github.com/apache/superset/edit/master/docs/docs/installation/installing-superset-from-pypi.mdx",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Installing from PyPI",hide_title:!0,sidebar_position:2,version:1},sidebar:"tutorialSidebar",previous:{title:"Installing on Kubernetes",permalink:"/docs/installation/running-on-kubernetes"},next:{title:"Installing Locally Using Docker Compose",permalink:"/docs/installation/installing-superset-using-docker-compose"}},p={},s=[{value:"Installing Superset from PyPI",id:"installing-superset-from-pypi",level:2},{value:"OS Dependencies",id:"os-dependencies",level:3},{value:"Python Virtual Environment",id:"python-virtual-environment",level:3},{value:"Installing and Initializing Superset",id:"installing-and-initializing-superset",level:3}],u={toc:s},d="wrapper";function y(e){let{components:n,...t}=e;return(0,r.yg)(d,(0,a.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"installing-superset-from-pypi"},"Installing Superset from PyPI"),(0,r.yg)("p",null,"This page describes how to install Superset using the ",(0,r.yg)("inlineCode",{parentName:"p"},"apache-superset")," package ",(0,r.yg)("a",{parentName:"p",href:"https://pypi.org/project/apache-superset/"},"published on PyPI"),"."),(0,r.yg)("h3",{id:"os-dependencies"},"OS Dependencies"),(0,r.yg)("p",null,"Superset stores database connection information in its metadata database. For that purpose, we use\nthe cryptography Python library to encrypt connection passwords. Unfortunately, this library has OS\nlevel dependencies."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Debian and Ubuntu")),(0,r.yg)("p",null,"The following command will ensure that the required dependencies are installed:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev default-libmysqlclient-dev\n")),(0,r.yg)("p",null,"In Ubuntu 20.04 the following command will ensure that the required dependencies are installed:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"sudo apt-get install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev default-libmysqlclient-dev\n")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Fedora and RHEL-derivative Linux distributions")),(0,r.yg)("p",null,"Install the following packages using the ",(0,r.yg)("inlineCode",{parentName:"p"},"yum")," package manager:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel\n")),(0,r.yg)("p",null,"In more recent versions of CentOS and Fedora, you may need to install a slightly different set of packages using ",(0,r.yg)("inlineCode",{parentName:"p"},"dnf"),":"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"sudo dnf install gcc gcc-c++ libffi-devel python3-devel python3-pip python3-wheel openssl-devel cyrus-sasl-devel openldap-devel\n")),(0,r.yg)("p",null,"Also, on CentOS, you may need to upgrade pip for the install to work:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"pip3 install --upgrade pip\n")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Mac OS X")),(0,r.yg)("p",null,"If you're not on the latest version of OS X, we recommend upgrading because we've found that many\nissues people have run into are linked to older versions of Mac OS X. After updating, install the\nlatest version of XCode command line tools:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"xcode-select --install\n")),(0,r.yg)("p",null,"We don't recommend using the system installed Python. Instead, first install the\n",(0,r.yg)("a",{parentName:"p",href:"https://brew.sh/"},"homebrew")," manager and then run the following commands:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"brew install readline pkg-config libffi openssl mysql postgresql@14\n")),(0,r.yg)("p",null,"You should install a recent version of Python. Refer to the ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/master/setup.py"},"setup.py")," file for a list of Python versions officially supported by Superset. We'd recommend using a Python version manager like ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/pyenv/pyenv"},"pyenv")," (and also ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/pyenv/pyenv-virtualenv"},"pyenv-virtualenv"),")."),(0,r.yg)("admonition",{type:"tip"},(0,r.yg)("p",{parentName:"admonition"},"To identify the Python version used by the official docker image, see the ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/master/Dockerfile"},"Dockerfile"),". Additional docker images published for newer versions of Python can be found in ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/master/scripts/build_docker.py"},"this file"),".")),(0,r.yg)("p",null,"Let's also make sure we have the latest version of ",(0,r.yg)("inlineCode",{parentName:"p"},"pip")," and ",(0,r.yg)("inlineCode",{parentName:"p"},"setuptools"),":"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"pip install --upgrade setuptools pip\n")),(0,r.yg)("p",null,"Lastly, you may need to set LDFLAGS and CFLAGS for certain Python packages to properly build. You can export these variables with:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},'export LDFLAGS="-L$(brew --prefix openssl)/lib"\nexport CFLAGS="-I$(brew --prefix openssl)/include"\n')),(0,r.yg)("p",null,"These will now be available when pip installing requirements."),(0,r.yg)("h3",{id:"python-virtual-environment"},"Python Virtual Environment"),(0,r.yg)("p",null,"We highly recommend installing Superset inside of a virtual environment. Python ships with\n",(0,r.yg)("inlineCode",{parentName:"p"},"virtualenv")," out of the box. If you're using ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/pyenv/pyenv"},"pyenv"),", you can install ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/pyenv/pyenv-virtualenv"},"pyenv-virtualenv"),". Or you can install it with ",(0,r.yg)("inlineCode",{parentName:"p"},"pip"),":"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"pip install virtualenv\n")),(0,r.yg)("p",null,"You can create and activate a virtual environment using:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"# virtualenv is shipped in Python 3.6+ as venv instead of pyvenv.\n# See https://docs.python.org/3.6/library/venv.html\npython3 -m venv venv\n. venv/bin/activate\n")),(0,r.yg)("p",null,"Or with pyenv-virtualenv:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"# Here we name the virtual env 'superset'\npyenv virtualenv superset\npyenv activate superset\n")),(0,r.yg)("p",null,"Once you activated your virtual environment, all of the Python packages you install or uninstall\nwill be confined to this environment. You can exit the environment by running ",(0,r.yg)("inlineCode",{parentName:"p"},"deactivate")," on the\ncommand line."),(0,r.yg)("h3",{id:"installing-and-initializing-superset"},"Installing and Initializing Superset"),(0,r.yg)("p",null,"First, start by installing ",(0,r.yg)("inlineCode",{parentName:"p"},"apache-superset"),":"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"pip install apache-superset\n")),(0,r.yg)("p",null,"Then, you need to initialize the database:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"superset db upgrade\n")),(0,r.yg)("admonition",{type:"tip"},(0,r.yg)("p",{parentName:"admonition"},"Note that some configuration is mandatory for production instances of Superset. In particular, Superset will not start without a user-specified value of SECRET_KEY. Please see ",(0,r.yg)("a",{parentName:"p",href:"/docs/installation/configuring-superset"},"Configuring Superset"),".")),(0,r.yg)("p",null,"Finish installing by running through the following commands:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"# Create an admin user in your metadata database (use `admin` as username to be able to load the examples)\nexport FLASK_APP=superset\nsuperset fab create-admin\n\n# Load some data to play with\nsuperset load_examples\n\n# Create default roles and permissions\nsuperset init\n\n# To start a development web server on port 8088, use -p to bind to another port\nsuperset run -p 8088 --with-threads --reload --debugger\n")),(0,r.yg)("p",null,"If everything worked, you should be able to navigate to ",(0,r.yg)("inlineCode",{parentName:"p"},"hostname:port")," in your browser (e.g.\nlocally by default at ",(0,r.yg)("inlineCode",{parentName:"p"},"localhost:8088"),") and login using the username and password you created."))}y.isMDXComponent=!0}}]);