diff --git a/package.json b/package.json
index 99469bb..7e14cd7 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
     "phantomjs-prebuilt": "2.1.x"
   },
   "scripts": {
-    "postinstall": "if [ ! -d .tox ] || [ ! -d .tox/karma ]; then tox -ekarma --notest; python3.5 -m pip install -U -t ./.tox/karma/lib/python3.5/site-packages/ ../horizon; fi",
+    "postinstall": "if [ ! -d .tox ] || [ ! -d .tox/karma ]; then tox -ekarma --notest; python3 -m pip install -U -t ./.tox/karma/lib/`python3 -V|tr -d ' '|tr 'P' 'p'|cut -c -9`/site-packages/ ../horizon; fi",
     "test": "karma start zun_ui/karma.conf.js --single-run",
     "lint": "eslint --no-color zun_ui/static",
     "lintq": "eslint --quiet zun_ui/static"
diff --git a/tox.ini b/tox.ini
index 1177a39..52a40fe 100644
--- a/tox.ini
+++ b/tox.ini
@@ -26,10 +26,11 @@ commands =
   pip install -e ../horizon
 
 [testenv:venv]
+basepython = python3
 commands = {posargs}
 
 [testenv:pep8]
-basepython = python3.5
+basepython = python3
 commands = flake8 {posargs}
 
 [flake8]
@@ -37,6 +38,7 @@ exclude = .venv,.git,.tox,dist,*egg,build,node_modules
 max-complexity = 20
 
 [testenv:cover]
+basepython = python3
 commands = python setup.py test --coverage --testr-args='{posargs}'
 
 # NOTE(shu-mutow): On CI infra, horizon will be installed
@@ -71,7 +73,7 @@ commands =
   {[testenv]commands}
 
 [testenv:eslint]
-basepython = python3.5
+basepython = python3
 whitelist_externals =
   npm
 commands =
@@ -79,10 +81,10 @@ commands =
   npm run lint
 
 # NOTE(shu-mutow): The "postinstall" script on package.json will install horizon
-# from master branch into py35 environment for testing javascripts.
+# from master branch into python3.x environment for testing javascripts.
 # Horizon from master is needed to be cloned into ../horizon on both local and CI.
 [testenv:karma]
-basepython = python3.5
+basepython = python3
 whitelist_externals =
   {[testenv:eslint]whitelist_externals}
 commands =
@@ -90,14 +92,14 @@ commands =
   npm run test
 
 [testenv:karma-local]
-basepython = python3.5
+basepython = python3
 whitelist_externals =
   {[testenv:eslint]whitelist_externals}
 commands =
   {[testenv:karma]commands}
 
 [testenv:docs]
-basepython = python3.5
+basepython = python3
 deps =
   -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
   -r{toxinidir}/doc/requirements.txt
@@ -105,7 +107,7 @@ commands=
   sphinx-build -W -b html doc/source doc/build/html
 
 [testenv:docs-local]
-basepython = python3.5
+basepython = python3
 deps =
   {[testenv:docs]deps}
 commands=
@@ -113,7 +115,7 @@ commands=
   {[testenv:docs]commands}
 
 [testenv:releasenotes]
-basepython = python3.5
+basepython = python3
 deps =
   {[testenv:docs]deps}
 commands =
diff --git a/zun_ui/karma.conf.js b/zun_ui/karma.conf.js
index 9760a43..725d494 100644
--- a/zun_ui/karma.conf.js
+++ b/zun_ui/karma.conf.js
@@ -16,14 +16,18 @@
 
 var fs = require('fs');
 var path = require('path');
+var child_process = require("child_process");
 
 module.exports = function (config) {
   // This tox venv is setup in the post-install npm step
-  var toxPath = '../.tox/karma/lib/python3.5/site-packages/';
+  var pythonVersion = "python3.";
+  var stdout = child_process.execFileSync("python3", ["--version"]);
+  pythonVersion += stdout.toString().split(".")[1];
+  var toxPath = '../.tox/karma/lib/' + pythonVersion + '/site-packages/';
+  console.log("Karma will check on directory: ", toxPath);
 
   process.env.PHANTOMJS_BIN = 'node_modules/phantomjs-prebuilt/bin/phantomjs';
 
-
   config.set({
     preprocessors: {
       // Used to collect templates for preprocessing.