diff --git a/.coveragerc b/.coveragerc
index 29a7797786b69891b899d07cee1bcf598d80245d..385fca7eb14340a3fcf2faff6f1894533b8096b7 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -3,6 +3,7 @@ cover_pylib = False
 omit = /usr/*
        */.local/*
        */tests/*
+       .eggs/*
        setup.py
 
 [report]
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 174f6650538df08df83e08fb466a22257956d879..e5d828a97011a33553257f80dd9ee4b4b105ef93 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -69,7 +69,7 @@ python3.5:
   script:
     - python --version
     - python setup.py test
-    - mkdir -p cover_report && mv -f build/lib/cover cover_report/$CI_JOB_NAME
+    - mkdir -p cover_report && mv -f cover cover_report/$CI_JOB_NAME
     - python setup.py install && lb-describe-platform --flags
   artifacts:
     paths:
@@ -82,7 +82,7 @@ python3.6:
   script:
     - python --version
     - python setup.py test
-    - mkdir -p cover_report && mv -f build/lib/cover cover_report/$CI_JOB_NAME
+    - mkdir -p cover_report && mv -f cover cover_report/$CI_JOB_NAME
     - python setup.py install && lb-describe-platform --flags
     - python setup.py sdist --dist-dir public/${CI_PROJECT_NAME,,}
     - python setup.py bdist_wheel --dist-dir public/${CI_PROJECT_NAME,,}
@@ -98,7 +98,7 @@ python3.7:
   script:
     - python --version
     - python setup.py test
-    - mkdir -p cover_report && mv -f build/lib/cover cover_report/$CI_JOB_NAME
+    - mkdir -p cover_report && mv -f cover cover_report/$CI_JOB_NAME
     - python setup.py install && lb-describe-platform --flags
     - python setup.py sdist --dist-dir public/${CI_PROJECT_NAME,,}
     - python setup.py bdist_wheel --dist-dir public/${CI_PROJECT_NAME,,}
diff --git a/nose2.cfg b/nose2.cfg
index 5e506abe4cde1985f21702d15d7dad7eb8dc4f40..ceec918bad5f89675ecafb00f64762645a613f27 100644
--- a/nose2.cfg
+++ b/nose2.cfg
@@ -1,4 +1,5 @@
 [unittest]
+start-dir = .
 plugins = nose2.plugins.doctests
 
 [coverage]
diff --git a/setup.py b/setup.py
index 4f0e9757faec910bc1d73ced7c4f7cb504d3fe38..f637efc9b2b047902114bd8b3fec17ba0b585f9e 100644
--- a/setup.py
+++ b/setup.py
@@ -18,6 +18,21 @@ here = path.abspath(path.dirname(__file__))
 with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
     long_description = f.read()
 
+if version_info >= (3, 0):
+    import shutil
+    shutil.copy(path.join(here, 'nose2.cfg'), path.join(here, 'nose2.cfg~'))
+    with open(path.join(here, 'nose2.cfg'), 'w', encoding='utf-8') as f:
+        f.writelines(l.replace('start-dir = .', 'start-dir = ./build/lib')
+                     for l in open(path.join(here, 'nose2.cfg~'),
+                                   encoding='utf-8'))
+    shutil.copy(path.join(here, '.coveragerc'), path.join(here, '.coveragerc~'))
+    with open(path.join(here, '.coveragerc'), 'w', encoding='utf-8') as f:
+        f.writelines(l.replace('setup.py', 'setup.py\n       LbPlatformUtils/*')
+                     for l in open(path.join(here, '.coveragerc~'),
+                                   encoding='utf-8'))
+
+
+
 # Arguments marked as "Required" below must be included for upload to PyPI.
 # Fields marked as "Optional" may be commented out.