example failure: https://app.circleci.com/pipelines/github/snarfed/oauth-dropins/90/workflows/2fb906b4-78f4-45d7-ad4d-46ed9d28b878/jobs/516
full error log:
```
Running setup.py install for grpcio ... error
Complete output from command /root/project/local3/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-2x6fpemn/grpcio/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-tmyhem3j/install-record.txt --single-version-externally-managed --compile --install-headers /root/project/local3/include/site/python3.7/grpcio:
Cython-generated files are missing...
We could not find Cython. Setup may take 10-20 minutes.
WARNING: The wheel package is not available.
...
Traceback (most recent call last):
File "/tmp/pip-install-mlr1xc5w/grpcio/src/python/grpcio/commands.py", line 264, in build_extensions
build_ext.build_ext.build_extensions(self)
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 449, in build_extensions
self._build_extensions_serial()
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 474, in _build_extensions_serial
self.build_extension(ext)
File "/root/project/local3/lib/python3.7/site-packages/setuptools/command/build_ext.py", line 200, in build_extension
if ext._needs_stub:
AttributeError: 'Extension' object has no attribute '_needs_stub'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-mlr1xc5w/grpcio/setup.py", line 465, in <module>
cmdclass=COMMAND_CLASS,
File "/root/project/local3/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
return distutils.core.setup(**attrs)
File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/root/project/local3/lib/python3.7/site-packages/setuptools/command/install.py", line 61, in run
return orig.install.run(self)
File "/usr/lib/python3.7/distutils/command/install.py", line 589, in run
self.run_command('build')
File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/lib/python3.7/distutils/command/build.py", line 135, in run
self.run_command(cmd_name)
File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/root/project/local3/lib/python3.7/site-packages/setuptools/command/build_ext.py", line 78, in run
_build_ext.run(self)
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 340, in run
self.build_extensions()
File "/tmp/pip-install-mlr1xc5w/grpcio/src/python/grpcio/commands.py", line 267, in build_extensions
support.diagnose_build_ext_error(self, error, formatted_exception)
File "/tmp/pip-install-mlr1xc5w/grpcio/src/python/grpcio/support.py", line 118, in diagnose_build_ext_error
diagnostic(build_ext, error)
File "/tmp/pip-install-mlr1xc5w/grpcio/src/python/grpcio/support.py", line 98, in diagnose_attribute_error
"We expect a missing `_needs_stub` attribute from older versions of "
commands.CommandError: We expect a missing `_needs_stub` attribute from older versions of setuptools. Consider upgrading setuptools.
----------------------------------------
Command "/root/project/local3/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-mlr1xc5w/grpcio/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-grvcioh0/install-record.txt --single-version-externally-managed --compile --install-headers /root/project/local3/include/site/python3.7/grpcio" failed with error code 1 in /tmp/pip-install-mlr1xc5w/grpcio/
```
eg https://circleci.com/gh/snarfed/bridgy-fed/164
```
testutil_appengine (unittest.loader.ModuleImportFailure) ... ERROR
...
======================================================================
ERROR: testutil_appengine (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: testutil_appengine
Traceback (most recent call last):
File "/usr/lib/python2.7/unittest/loader.py", line 254, in _find_tests
module = self._get_module_from_name(name)
File "/usr/lib/python2.7/unittest/loader.py", line 232, in _get_module_from_name
__import__(name)
File "/tmp/oauth-dropins/oauth_dropins/webutil/testutil_appengine.py", line 4, in <module>
from google.appengine.datastore import datastore_stub_util
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/datastore/datastore_stub_util.py", line 69, in <module>
from google.appengine.datastore import datastore_stub_index
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/datastore/datastore_stub_index.py", line 45, in <module>
import yaml
ImportError: No module named yaml
```