diff --git a/python/MANIFEST.in b/python/MANIFEST.in
index 20c559806d49ffe73a3a5b6ea5ce39f29c65328f..60433df7c7d9393af6a7228d3f9716a9421944e1 100644
--- a/python/MANIFEST.in
+++ b/python/MANIFEST.in
@@ -1,4 +1,4 @@
 include VERSION
-include Plumed.h
+include include/Plumed.h
 include plumed.pyx
 include cplumed.pxd
diff --git a/python/Makefile b/python/Makefile
index 862e97c4a0ab14d918b6ebd34ff9226cd4dc7193..a8c4b2932344e481a6b9da9122286e6a6ef3498c 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -29,8 +29,9 @@ all:
 endif
 
 pip:
-	cp ../src/wrapper/Plumed.h .
 	cp ../VERSION .
+	mkdir -p include
+	cp ../src/wrapper/Plumed.h include/
 
 ifndef python_bin
 python_bin=python
@@ -40,10 +41,12 @@ endif
 
 pypi:
 	mkdir -p pypi
+	mkdir -p pypi/include
 	cp -r test pypi/
-	cp ../src/wrapper/Plumed.h README.rst MANIFEST.in cplumed.pxd plumed.pyx setup.py ../VERSION pypi/
+	cp ../src/wrapper/Plumed.h pypi/include/
+	cp README.rst MANIFEST.in cplumed.pxd plumed.pyx setup.py ../VERSION pypi/
 	cd pypi ; plumed_language_level=2 $(python_bin) setup.py sdist
 	echo "now use: $(python_bin) -m twine upload dist/plumed-$(VERSION).tar.gz"
 
 clean:
-	rm -fr *.so plumed.cpp build Plumed.h VERSION pypi test/logfile test/bck* pypi
+	rm -fr *.so plumed.cpp build Plumed.h VERSION pypi test/logfile test/bck* pypi include
diff --git a/python/setup.py b/python/setup.py
index 8ff2032e56c9ff52f1dc38c17076daaeb2d449e6..bbe0f39082c252f6a2820306a89263faad22a0ee 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -48,7 +48,11 @@ else:
 
 if os.getenv("plumed_macports") is not None:
     copyfile("../VERSION","VERSION")
-    copyfile("../src/wrapper/Plumed.h","Plumed.h")
+    try:
+        os.mkdir("include")
+    except OSError:
+        pass
+    copyfile("../src/wrapper/Plumed.h","include/Plumed.h")
 
 plumedname = os.getenv("plumed_program_name")
 if plumedname is None:
@@ -89,7 +93,7 @@ def readme():
 try:
     include_dirs=[os.environ["plumed_include_dir"]]
 except KeyError:
-    include_dirs=["."]
+    include_dirs=["./include"]
 
 # allow one to force using cython with env var plumed_force_cython=yes
 USE_CYTHON = False