buildout / buildout.wheel

Buildout extension to provide wheel support
MIT License
7 stars 8 forks source link

Installing from wheel failed after upgrading to setuptools v38.2.0 #17

Closed k4ml closed 6 years ago

k4ml commented 6 years ago

Running ./bin/buildout gave this error:-

Using unpack_wheel() shim over the deprecated wheel_to_egg() hook.
Please update your wheel extension implementation for one that installs a .whl
handler in zc.buildout.easy_install.UNPACKERS
While:
  Installing.
  Loading extensions.
  Getting distribution for 'mr.developer'.
Error: Wheels are not supported

Using setuptools v38.1.0 still work. Probably caused by pypa/setuptools#1200.

k4ml commented 6 years ago

This is how to reproduce this:-

wget https://bootstrap.pypa.io/bootstrap-buildout.py

Create this buildout.cfg:-

[buildout]
parts = main
extensions =
    buildout.wheel
    mr.developer

[main]
recipe = zc.recipe.egg
eggs =
    requests

Then run buildout:-

python3 bootstrap-buildout.py
./bin/buildout
k4ml commented 6 years ago

It look like buildout.wheel.load() doesn't has a chance to run now to patch and inject correct function into zc.buildout.easy_install.UNPACKERS.

reinout commented 6 years ago

I'm getting the same error on a jenkins machine. I'm using mr.developer there, but not buildout.wheel. So it probably hasn't got anything to do with buildout.wheel, strangely.

Getting distribution for 'mr.developer==1.28'.
Got mr.developer 1.28.
mr.developer: Creating missing sources dir /code/src.
Getting distribution for 'setuptools'.
/usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type'
  warnings.warn(msg)
warning: no files found matching '*' under directory 'setuptools/_vendor'
Got setuptools 38.2.0.
Upgraded:
  setuptools version 38.2.0;
restarting.
Generated script '/code/bin/buildout'.
Getting distribution for 'setuptools'.
Using unpack_wheel() shim over the deprecated wheel_to_egg() hook.
Please update your wheel extension implementation for one that installs a .whl
handler in zc.buildout.easy_install.UNPACKERS
While:
  Installing.
  Checking for upgrades.
  Getting distribution for 'setuptools'.
Error: Wheels are not supported
script returned exit code 1
mgedmin commented 6 years ago

I don't think this is a buildout.wheel issue, so I've filed https://github.com/buildout/buildout/issues/425

k4ml commented 6 years ago

Workaround mentioned here seem to work. buildout.wheel also get loaded and executed. All packages also still installed as wheel (.ovo) in eggs/ dir.

pip.vcs: Registered VCS backend: git
pip.vcs: Registered VCS backend: hg
pip.vcs: Registered VCS backend: svn
pip.vcs: Registered VCS backend: bzr
buildout.wheel: Patched in wheel support

buildout/buildout/issues/425.

reinout commented 6 years ago

It looks to me like buildout.wheel isn't needed anymore. With that workaround, without buildout.wheel, setuptools does the job itself. The wheel (numpy in my case) gets installed as a .whl directory: numpy-1.13.3-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl/

The sys.path in a script also looks fine:

sys.path[0:0] = [
  '/private/tmp/reutel/eggs/requests-2.18.3-py2.py3-none-any.whl',
  '/private/tmp/reutel/eggs/numpy-1.13.3-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl',
  '/private/tmp/reutel/eggs/idna-2.5-py3.6.egg',
  '/private/tmp/reutel/eggs/chardet-3.0.4-py3.6.egg',
  '/private/tmp/reutel/eggs/certifi-2017.11.5-py3.6.egg',
  '/private/tmp/reutel/eggs/urllib3-1.22-py3.6.egg',
  ]
k4ml commented 6 years ago

And removing .whl from UNPACKERS, the wheel will get installed as .egg extension. It still installed from wheel, as getting lxml for example is just a snap, instead of going through compilation step.