#2032 closed defect (fixed)

`pip` managed install is broken.

Reported by: nejucomo Owned by:
Priority: major Milestone: 1.10.1
Component: packaging Version: 1.10.0
Keywords: pypi openitp-packaging nevow pip Cc:
Launchpad Bug: 1091055

Description (last modified by nejucomo)

Synopsis:

The command pip install allmydata-tahoe fails because of a bug in the Nevow dependency.

Known workaround:

Install twisted first with pip. This works for me:

$ pip install twisted && pip install allmydata-tahoe

Details:

It appears related to Nevow. I'm hopping on #twisted to ask for advice.

$ mkdir ~/tmp/tahoe-install-test

$ cd !$
cd ~/tmp/tahoe-install-test

$ virtualenv .
Using real prefix '/usr/local/bin/../stow/Python-2.7.3-setuptools-0.6c11'
New python executable in ./bin/python
Installing setuptools............done.
Installing pip...............done.

$ source ./bin/activate
(tahoe-install-test)
$ pip install allmydata-tahoe
Downloading/unpacking allmydata-tahoe
  Downloading allmydata-tahoe-1.10.0.tar.gz (1.4MB): 1.4MB downloaded
  Running setup.py egg_info for package allmydata-tahoe
    Not found: tahoe-deps
    Not found: ../tahoe-deps

    Installed /home/n/tmp/tahoe-install-test/build/allmydata-tahoe/Twisted-13.0.0-py2.7-linux-x86_64.egg
    Searching for zope.interface==3.6.0,==3.6.1,==3.6.2,>=3.6.5
    Reading http://pypi.python.org/simple/zope.interface/
    Best match: zope.interface 4.0.5
    Downloading https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-sdists/zope.interface-4.0.5.zip
    Processing zope.interface-4.0.5.zip
    Running zope.interface-4.0.5/setup.py -q bdist_egg --dist-dir /home/n/tmp/easy_install-B8abnY/zope.interface-4.0.5/egg-dist-tmp-7VsGgq
    warning: no previously-included files matching '*.dll' found anywhere in distribution
    warning: no previously-included files matching '*.pyc' found anywhere in distribution
    warning: no previously-included files matching '*.pyo' found anywhere in distribution
    warning: no previously-included files matching '*.so' found anywhere in distribution

    Installed /home/n/tmp/tahoe-install-test/build/allmydata-tahoe/zope.interface-4.0.5-py2.7-linux-x86_64.egg

    package init file 'src/allmydata/web/static/__init__.py' not found (or not a regular file)
    package init file 'src/allmydata/web/static/css/__init__.py' not found (or not a regular file)
    warning: no previously-included files matching '*~' found anywhere in distribution
    warning: no previously-included files matching '*.pyc' found anywhere in distribution
Requirement already satisfied (use --upgrade to upgrade): setuptools>=0.6c6 in ./lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg (from allmydata-tahoe)
Downloading/unpacking zfec>=1.1.0 (from allmydata-tahoe)
  Downloading zfec-1.4.24.tar.gz (175kB): 175kB downloaded
  Running setup.py egg_info for package zfec

Downloading/unpacking simplejson>=1.4 (from allmydata-tahoe)
  Downloading simplejson-3.3.0.tar.gz (67kB): 67kB downloaded
  Running setup.py egg_info for package simplejson

Downloading/unpacking zope.interface==3.6.0,==3.6.1,==3.6.2,>=3.6.5 (from allmydata-tahoe)
  Downloading zope.interface-4.0.5.zip (173kB): 173kB downloaded
  Running setup.py egg_info for package zope.interface

    warning: no previously-included files matching '*.dll' found anywhere in distribution
    warning: no previously-included files matching '*.pyc' found anywhere in distribution
    warning: no previously-included files matching '*.pyo' found anywhere in distribution
    warning: no previously-included files matching '*.so' found anywhere in distribution
Downloading/unpacking Twisted>=11.0.0 (from allmydata-tahoe)
  Downloading Twisted-13.1.0.tar.bz2 (2.7MB): 2.7MB downloaded
  Running setup.py egg_info for package Twisted

Downloading/unpacking foolscap>=0.6.3 (from allmydata-tahoe)
  Downloading foolscap-0.6.4.tar.gz (479kB): 479kB downloaded
  Running setup.py egg_info for package foolscap

Downloading/unpacking pyOpenSSL (from allmydata-tahoe)
  Downloading pyOpenSSL-0.13.tar.gz (250kB): 250kB downloaded
  Running setup.py egg_info for package pyOpenSSL

    warning: no previously-included files matching '*.pyc' found anywhere in distribution
Downloading/unpacking Nevow>=0.6.0 (from allmydata-tahoe)
  Downloading Nevow-0.10.0.tar.gz (518kB): 518kB downloaded
  Running setup.py egg_info for package Nevow
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/home/n/tmp/tahoe-install-test/build/Nevow/setup.py", line 3, in <module>
        from nevow import __version__ as version
      File "nevow/__init__.py", line 5, in <module>
        from nevow._version import version
      File "nevow/_version.py", line 2, in <module>
        from twisted.python import versions
    ImportError: No module named twisted.python
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/home/n/tmp/tahoe-install-test/build/Nevow/setup.py", line 3, in <module>

    from nevow import __version__ as version

  File "nevow/__init__.py", line 5, in <module>

    from nevow._version import version

  File "nevow/_version.py", line 2, in <module>

    from twisted.python import versions

ImportError: No module named twisted.python

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /home/n/tmp/tahoe-install-test/build/Nevow
Storing complete log in /home/n/.pip/pip.log

Change History (21)

comment:1 Changed at 2013-07-20T19:42:59Z by nejucomo

This is a known Nevow vs pip issue: https://bugs.launchpad.net/nevow/+bug/1091055

comment:2 follow-up: Changed at 2013-07-20T20:15:43Z by nejucomo

I've submitted a patch to Nevow which fixes this issue (at least on my system): https://bugs.launchpad.net/nevow/+bug/1091055/comments/5

comment:3 Changed at 2013-07-20T20:23:18Z by nejucomo

  • Priority changed from normal to major

comment:4 Changed at 2013-07-20T20:25:07Z by nejucomo

I consider this major because I'm part of the PyPI + pip hegemony which intends to take over the (python) world. Also, check out this claim of >40,000 PyPI downloads!

comment:5 Changed at 2013-07-20T20:26:27Z by nejucomo

  • Priority changed from major to normal

See also #1963 "replace nevow with twisted.web.template"

comment:6 Changed at 2013-07-20T20:27:35Z by nejucomo

  • Priority changed from normal to major

comment:7 in reply to: ↑ 2 Changed at 2013-07-20T20:57:42Z by nejucomo

Replying to nejucomo:

I've submitted a patch to Nevow which fixes this issue (at least on my system): https://bugs.launchpad.net/nevow/+bug/1091055/comments/5

Also, to keep the ball rolling I attempted to translate the patch into a bzr / lp merge request.

comment:8 Changed at 2013-07-26T06:04:56Z by nejucomo

  • Description modified (diff)

comment:9 follow-up: Changed at 2013-08-28T11:16:25Z by daira

I believe that, due to this Nevow commit, the bug only happens when import setuptools fails (as it will in a clean virtualenv).

comment:10 Changed at 2013-08-28T11:24:10Z by daira

... and Zooko correctly anticipated the problem two years ago. How annoying.

comment:11 Changed at 2013-08-28T11:34:44Z by daira

[12:28] <dstufft> setuptools should always be importable when you're installing with pip (unless you hit the pip bug that uninstalls setuptools but your entire install will break then)

[12:31] <dstufft> daira1: pip is still broken with Nevow because the last release of Nevow was made in 2009 and it does not contain that commit

[12:32] <daira1> wow. okay

Last edited at 2013-08-28T11:35:47Z by daira (previous) (diff)

comment:12 Changed at 2013-08-29T00:06:12Z by daira

  • Keywords nevow added

comment:13 in reply to: ↑ 9 ; follow-up: Changed at 2013-08-29T00:23:09Z by nejucomo

Replying to daira:

I believe that, due to this Nevow commit, the bug only happens when import setuptools fails (as it will in a clean virtualenv).

There may be more than one bug. I don't understand what the presence of setuptools has to do with the bug I find when running pip install nevow, which is that if setup.py imports nevow, then it will import twisted.

If twisted is not installed, then setup.py will raise an ImportError. This prevents a user from running "python ./setup.py <anything>" unless they've already installed a dependency. If this is true then I believe it would also break easy_install or any other case where setup.py is executed *prior* to satisfying dependencies.

comment:14 in reply to: ↑ 13 Changed at 2013-09-01T05:16:29Z by daira

Replying to nejucomo:

Replying to daira:

I believe that, due to this Nevow commit, the bug only happens when import setuptools fails (as it will in a clean virtualenv).

There may be more than one bug. I don't understand what the presence of setuptools has to do with the bug I find when running pip install nevow, which is that if setup.py imports nevow, then it will import twisted.

I was mistaken: the Nevow commit isn't in any release yet [and isn't on trunk, since the branch was never merged]. pip depends on setuptools so that will always be present.

Last edited at 2014-03-14T17:35:09Z by daira (previous) (diff)

comment:15 Changed at 2014-01-06T03:17:44Z by daira

  • Launchpad Bug set to 1091055

comment:16 Changed at 2014-01-06T19:19:52Z by zooko

I've added a comment on https://bugs.launchpad.net/nevow/+bug/812537 saying that this issue is causing Tahoe-LAFS users to be unable to install it.

comment:17 Changed at 2014-03-14T17:17:33Z by daira

  • Keywords pip added

comment:18 Changed at 2014-06-23T19:41:42Z by warner

  • Milestone changed from undecided to 1.11.0
  • Resolution set to fixed
  • Status changed from new to closed

Nevow-0.11.1 was released a few days ago (https://github.com/twisted/nevow/blob/nevow-0.11.1/NEWS.txt), and supports install from 'pip'. I just confirmed that a simple pip install allmydata-tahoe in a clean virtualenv gets me a working tahoe binary (and tahoe debug repl can import nevow without complaint).

Closing this one out. Yay! Crediting this to the 1.11 milestone (even though it was fixed by something outside of tahoe's source tree) so we remember to mention it in the release notes.

comment:19 follow-up: Changed at 2014-07-02T03:56:28Z by nejucomo

  • Resolution fixed deleted
  • Status changed from closed to reopened

Daira and I noticed we do not yet depend on Nevow >= 0.11.1. We're not yet sure if it's still possible to run into this problem, but it might be prudent to bump the requirement up.

I'm going to reopen this to ensure we bump the dependency version or discuss why not to do so.

comment:20 in reply to: ↑ 19 Changed at 2014-09-02T16:57:33Z by daira

  • Resolution set to fixed
  • Status changed from reopened to closed

Replying to nejucomo:

Daira and I noticed we do not yet depend on Nevow >= 0.11.1. We're not yet sure if it's still possible to run into this problem, but it might be prudent to bump the requirement up.

I'm going to reopen this to ensure we bump the dependency version or discuss why not to do so.

Moved to #2291. The original problem is fixed just by the availability of Nevow 0.11.1.

comment:21 Changed at 2014-09-25T15:42:31Z by daira

  • Keywords openitp-packaging added; packaging removed
Note: See TracTickets for help on using tickets.