diff --git a/roles/ensure-twine/README.rst b/roles/ensure-twine/README.rst
index 604d61a54..9f0a62bb5 100644
--- a/roles/ensure-twine/README.rst
+++ b/roles/ensure-twine/README.rst
@@ -1,5 +1,9 @@
 Ensure twine is installed.
 
+This role is designed to run without permissions, so assumes a working
+Python 3 ``pip`` environment (i.e. it will not install system
+packages).
+
 **Role Variables**
 
 .. zuul:rolevar:: twine_python
diff --git a/test-playbooks/python/upload-pypi.yaml b/test-playbooks/python/upload-pypi.yaml
index 3a0e67317..50f627aa2 100644
--- a/test-playbooks/python/upload-pypi.yaml
+++ b/test-playbooks/python/upload-pypi.yaml
@@ -1,5 +1,8 @@
 - hosts: all
   tasks:
+    - name: Ensure pip works for ensure-twine
+      include_role:
+        name: ensure-pip
 
     - name: Install twine
       include_role: