#225 Install fails when installing as dependency with latest pip

1.0
closed
None
Code
minor
PyXB 1.2.3
defect
2015-01-22
2014-01-31
Roger Dahl
No

PyXB 1.2.3 is a dependency of our dataone.common library. When installing dataone.common with the latest version of pip, the pyxb setup fails with:

Downloading/unpacking pyxb==1.2.3 (from dataone.common)
  Downloading PyXB-1.2.3.tar.gz (8.6MB): 8.6MB downloaded
  Running setup.py (path:/var/local/dataone/gmn/gmn/build/pyxb/setup.py) egg_info for package pyxb
    Found bundle in /var/local/dataone/gmn/gmn/build/pyxb/pyxb/bundles/saml20
    Found bundle in /var/local/dataone/gmn/gmn/build/pyxb/pyxb/bundles/wssplat
    Found bundle in /var/local/dataone/gmn/gmn/build/pyxb/pyxb/bundles/common
    Found bundle in /var/local/dataone/gmn/gmn/build/pyxb/pyxb/bundles/dc
    error in PyXB setup command: package_data must be a dictionary mapping package names to lists of wildcard patterns
    Complete output from command python setup.py egg_info:
    Found bundle in /var/local/dataone/gmn/gmn/build/pyxb/pyxb/bundles/saml20

Found bundle in /var/local/dataone/gmn/gmn/build/pyxb/pyxb/bundles/wssplat

Found bundle in /var/local/dataone/gmn/gmn/build/pyxb/pyxb/bundles/common

Found bundle in /var/local/dataone/gmn/gmn/build/pyxb/pyxb/bundles/dc

error in PyXB setup command: package_data must be a dictionary mapping package names to lists of wildcard patterns

To reproduce, update to the latest pip and install dataone.common:

$ sudo pip install --upgrade pip
$ sudo pip install dataone.common

Installing works with earlier versions of pip. Installing pyxb directly with the latest version of pip also works.

Discussion

  • Peter A. Bigot

    Peter A. Bigot - 2014-01-31
    • priority changed from major to minor

    Best I can guess is that PyXB uses distutils, while the other packages are using setuputils, and the issue arises from that. It may be as simple as adding a setup.cfg and switching to something like:

    try:
        from setuptools import setup, Commands
    except ImportError:
        from distutils import setup, Commands
    

    However I can't test that because pip doesn't appear to provide a way to do installs from already-downloaded tar files in which I can put potential solutions. In fact, https://github.com/pypa/pip/issues/906 suggests they're in the process of removing what they do support (which doesn't work since pip install --no-install dataone.common breaks too, and there is no replacement unpack command and no clue as to what --no-install is doing that causes the blow-up).

    Since pip does work for pyxb in isolation, I don't think this is going to be fixed unless you or somebody else can figure out how to test it as a dependency, and describe it the process in a way I can reproduce.

    pip has traditionally been a pain. I note that "easy_install dataone.common" appears to work fine. I'm very reluctant to switch to setuputils unless I'm convinced it isn't going to break what's always been a pretty fragile installation framework.

     
  • Roger Dahl

    Roger Dahl - 2014-02-02

    https://pypi.python.org/pypi/pypiserver implements a simple PyPI server which will proxy to the real PyPI server for any packages not available locally.

     
  • Peter A. Bigot

    Peter A. Bigot - 2014-02-02

    After way too much effort, I've tracked this down to a behavior change in pip for which I've filed issue 1525. If this isn't fixed before the next PyXB release I'll work around it, but fundamentally I don't believe PyXB is at fault.

    Leaving this open to remind me to check it before the next release.

     
  • Roger Dahl

    Roger Dahl - 2014-02-04

    Thank you. I really appreciate your work on this.

    For now, we have moved PyXB to a manual installation step.

     
  • Peter A. Bigot

    Peter A. Bigot - 2014-06-06

    Closing as fixed upstream.

     
  • Peter A. Bigot

    Peter A. Bigot - 2014-06-06
    • Description has changed:

    Diff:

    • status: new --> closed
    • Milestone: --> 1.0
     

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks