juju-solutions / bundletester

A juju charm and bundle test runner
http://juju-solutions.github.io/bundletester
15 stars 20 forks source link

bundletester deps fail in a py35 virtualenv #106

Open ryan-beisner opened 7 years ago

ryan-beisner commented 7 years ago

Bundletester deps fail in a py35 virtualenv, but succeed (installation) in a py27 virtualenv. However, juju-wait is python3-only, and fails upon execution in the py27 virtualenv.

py35

ubuntu@osci-bastion:/tmp⟫ virtualenv -p python3.5 venv35
Running virtualenv with interpreter /usr/bin/python3.5
Using base prefix '/usr'
New python executable in /tmp/venv35/bin/python3.5
Also creating executable in /tmp/venv35/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

ubuntu@osci-bastion:/tmp⟫ . venv35/bin/activate

(venv35) ubuntu@osci-bastion:/tmp⟫ pip install bundletester
Collecting bundletester
  Using cached bundletester-0.11.2.tar.gz
Collecting blessings (from bundletester)
  Using cached blessings-1.6.tar.gz
Collecting charm-tools (from bundletester)
  Using cached charm-tools-2.2.0.tar.gz
Collecting coverage (from bundletester)
  Using cached coverage-4.3.4-cp35-cp35m-manylinux1_x86_64.whl
Collecting juju-deployer>=0.6.0 (from bundletester)
  Using cached juju-deployer-0.10.0.tar.gz
Collecting lazr.authentication (from bundletester)
  Using cached lazr.authentication-0.1.3.tar.gz
Collecting mock (from bundletester)
  Using cached mock-2.0.0-py2.py3-none-any.whl
Collecting nose (from bundletester)
  Using cached nose-1.3.7-py3-none-any.whl
Collecting requests<=2.9.1 (from bundletester)
  Using cached requests-2.9.1-py2.py3-none-any.whl
Collecting simplejson>=3.8.0 (from bundletester)
Collecting websocket-client (from bundletester)
  Using cached websocket_client-0.40.0.tar.gz
Collecting juju-wait (from bundletester)
  Using cached juju_wait-2.5.1-py2.py3-none-any.whl
Collecting launchpadlib<1.11 (from charm-tools->bundletester)
  Using cached launchpadlib-1.10.5.tar.gz
Collecting cheetah<=2.4.4 (from charm-tools->bundletester)
  Using cached Cheetah-2.4.4.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-xui0597r/cheetah/setup.py", line 10, in <module>
        import SetupTools
      File "/tmp/pip-build-xui0597r/cheetah/SetupTools.py", line 50
        except DistutilsPlatformError, x:
                                     ^
    SyntaxError: invalid syntax

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-xui0597r/cheetah/
(venv35) 1 ubuntu@osci-bastion:/tmp⟫ 

py27

ubuntu@osci-bastion:/tmp⟫ virtualenv -p python2.7 venv27                                                                                                                                                                                                                         
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /tmp/venv27/bin/python2.7
Also creating executable in /tmp/venv27/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
ubuntu@osci-bastion:/tmp⟫ . venv27/bin/activate                                                                                                                                                                                                                                  
(venv27) ubuntu@osci-bastion:/tmp⟫ pip install bundletester
Collecting bundletester
  Using cached bundletester-0.11.2.tar.gz
Collecting blessings (from bundletester)
  Using cached blessings-1.6.tar.gz
Collecting charm-tools (from bundletester)
  Using cached charm-tools-2.2.0.tar.gz
Collecting coverage (from bundletester)
  Downloading coverage-4.3.4-cp27-cp27mu-manylinux1_x86_64.whl (189kB)
    100% |████████████████████████████████| 194kB 1.0MB/s 
Collecting juju-deployer>=0.6.0 (from bundletester)
  Using cached juju-deployer-0.10.0.tar.gz
Collecting lazr.authentication (from bundletester)
  Using cached lazr.authentication-0.1.3.tar.gz
Collecting mock (from bundletester)
  Using cached mock-2.0.0-py2.py3-none-any.whl
Collecting nose (from bundletester)
  Downloading nose-1.3.7-py2-none-any.whl (154kB)
    100% |████████████████████████████████| 163kB 958kB/s 
Collecting requests<=2.9.1 (from bundletester)
  Using cached requests-2.9.1-py2.py3-none-any.whl
Collecting simplejson>=3.8.0 (from bundletester)
Collecting websocket-client (from bundletester)
  Using cached websocket_client-0.40.0.tar.gz
Collecting juju-wait (from bundletester)
  Using cached juju_wait-2.5.1-py2.py3-none-any.whl
Collecting launchpadlib<1.11 (from charm-tools->bundletester)
  Using cached launchpadlib-1.10.5.tar.gz
Collecting cheetah<=2.4.4 (from charm-tools->bundletester)
  Using cached Cheetah-2.4.4.tar.gz
Collecting pyyaml==3.11 (from charm-tools->bundletester)
  Downloading PyYAML-3.11.zip (371kB)
    100% |████████████████████████████████| 378kB 1.2MB/s 
Collecting paramiko<2.0.0 (from charm-tools->bundletester)
  Downloading paramiko-1.18.2-py2.py3-none-any.whl (173kB)
    100% |████████████████████████████████| 174kB 2.5MB/s 
Collecting libcharmstore (from charm-tools->bundletester)
  Using cached libcharmstore-0.0.7.tar.gz
Collecting ruamel.yaml<=0.10.23 (from charm-tools->bundletester)
  Downloading ruamel.yaml-0.10.23.tar.gz (228kB)
    100% |████████████████████████████████| 235kB 1.7MB/s 
Collecting pathspec<=0.3.4 (from charm-tools->bundletester)
  Downloading pathspec-0.3.4.tar.gz
Collecting otherstuf<=1.1.0 (from charm-tools->bundletester)
  Downloading otherstuf-1.1.0-py2.py3-none-any.whl
Collecting path.py<=8.1.2 (from charm-tools->bundletester)
  Downloading path.py-8.1.2-py2.py3-none-any.whl
Requirement already satisfied: pip>=1.5.4 in ./venv27/lib/python2.7/site-packages (from charm-tools->bundletester)
Collecting jujubundlelib (from charm-tools->bundletester)
Collecting virtualenv>=1.11.4 (from charm-tools->bundletester)
  Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 408kB/s 
Collecting colander<=1.0b1 (from charm-tools->bundletester)
  Downloading colander-1.0b1.tar.gz (113kB)
    100% |████████████████████████████████| 122kB 980kB/s 
Collecting jsonschema<=2.5.1 (from charm-tools->bundletester)
  Downloading jsonschema-2.5.1-py2.py3-none-any.whl
Collecting secretstorage<2.3.0 (from charm-tools->bundletester)
  Downloading SecretStorage-2.2.1.tar.gz
Collecting jujuclient>=0.53 (from juju-deployer>=0.6.0->bundletester)
  Downloading jujuclient-0.54.0.tar.gz
Requirement already satisfied: six in ./venv27/lib/python2.7/site-packages (from juju-deployer>=0.6.0->bundletester)
Collecting httplib2 (from lazr.authentication->bundletester)
  Downloading httplib2-0.10.3.tar.gz (204kB)
    100% |████████████████████████████████| 204kB 663kB/s 
Collecting oauth (from lazr.authentication->bundletester)
  Downloading oauth-1.0.1.tar.gz
Requirement already satisfied: setuptools in ./venv27/lib/python2.7/site-packages (from lazr.authentication->bundletester)
Collecting wsgi_intercept (from lazr.authentication->bundletester)
  Downloading wsgi_intercept-1.5.0.tar.gz
Collecting zope.interface (from lazr.authentication->bundletester)
  Downloading zope.interface-4.4.0-cp27-cp27mu-manylinux1_x86_64.whl (171kB)
    100% |████████████████████████████████| 174kB 2.8MB/s 
Collecting funcsigs>=1; python_version < "3.3" (from mock->bundletester)
  Using cached funcsigs-1.0.2-py2.py3-none-any.whl
Collecting pbr>=0.11 (from mock->bundletester)
  Downloading pbr-3.0.0-py2.py3-none-any.whl (98kB)
    100% |████████████████████████████████| 102kB 4.3MB/s 
Collecting backports.ssl_match_hostname (from websocket-client->bundletester)
  Downloading backports.ssl_match_hostname-3.5.0.1.tar.gz
Collecting keyring (from launchpadlib<1.11->charm-tools->bundletester)
  Downloading keyring-10.3.2-py2.py3-none-any.whl
Collecting lazr.restfulclient>=0.9.19 (from launchpadlib<1.11->charm-tools->bundletester)
  Downloading lazr.restfulclient-0.13.1.tar.gz (55kB)
    100% |████████████████████████████████| 61kB 2.9MB/s 
Collecting lazr.uri (from launchpadlib<1.11->charm-tools->bundletester)
  Downloading lazr.uri-1.0.3.tar.gz
Collecting testresources (from launchpadlib<1.11->charm-tools->bundletester)
  Downloading testresources-2.0.1-py2.py3-none-any.whl
Collecting wadllib (from launchpadlib<1.11->charm-tools->bundletester)
  Downloading wadllib-1.3.2.tar.gz (60kB)
    100% |████████████████████████████████| 61kB 1.0MB/s 
Collecting Markdown>=2.0.1 (from cheetah<=2.4.4->charm-tools->bundletester)
  Downloading Markdown-2.6.8.tar.gz (307kB)
    100% |████████████████████████████████| 317kB 1.4MB/s 
Collecting ecdsa<2.0,>=0.11 (from paramiko<2.0.0->charm-tools->bundletester)
  Downloading ecdsa-0.13-py2.py3-none-any.whl (86kB)
    100% |████████████████████████████████| 92kB 791kB/s 
Collecting pycrypto!=2.4,<3.0,>=2.1 (from paramiko<2.0.0->charm-tools->bundletester)
  Downloading pycrypto-2.6.1.tar.gz (446kB)
    100% |████████████████████████████████| 450kB 534kB/s 
Collecting theblues<1.0,>=0.3.7 (from libcharmstore->charm-tools->bundletester)
  Using cached theblues-0.3.8.tar.gz
Collecting ruamel.base>=1.0.0 (from ruamel.yaml<=0.10.23->charm-tools->bundletester)
  Downloading ruamel.base-1.0.0-py2-none-any.whl
Collecting ruamel.ordereddict (from ruamel.yaml<=0.10.23->charm-tools->bundletester)
  Downloading ruamel.ordereddict-0.4.9-cp27-cp27mu-manylinux1_x86_64.whl (99kB)
    100% |████████████████████████████████| 102kB 1.8MB/s 
Collecting stuf>=0.9.16 (from otherstuf<=1.1.0->charm-tools->bundletester)
  Downloading stuf-0.9.16-py2-none-any.whl
Collecting translationstring (from colander<=1.0b1->charm-tools->bundletester)                                                                                                                                                                                            [7/343]
  Downloading translationstring-1.3-py2.py3-none-any.whl
Collecting functools32; python_version == "2.7" (from jsonschema<=2.5.1->charm-tools->bundletester)
  Using cached functools32-3.2.3-2.zip
Requirement already satisfied: appdirs>=1.4.0 in ./venv27/lib/python2.7/site-packages (from setuptools->lazr.authentication->bundletester)
Requirement already satisfied: packaging>=16.8 in ./venv27/lib/python2.7/site-packages (from setuptools->lazr.authentication->bundletester)
Collecting parse>=1.6.6 (from stuf>=0.9.16->otherstuf<=1.1.0->charm-tools->bundletester)
  Downloading parse-1.8.0.tar.gz
Requirement already satisfied: pyparsing in ./venv27/lib/python2.7/site-packages (from packaging>=16.8->setuptools->lazr.authentication->bundletester)
Building wheels for collected packages: bundletester, blessings, charm-tools, juju-deployer, lazr.authentication, websocket-client, launchpadlib, cheetah, pyyaml, libcharmstore, ruamel.yaml, pathspec, colander, secretstorage, jujuclient, httplib2, oauth, wsgi-intercept, ba
ckports.ssl-match-hostname, lazr.restfulclient, lazr.uri, wadllib, Markdown, pycrypto, theblues, functools32, parse
  Running setup.py bdist_wheel for bundletester ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/c6/c9/4d/b2835b7f28480295b81a08b88f9778264826a17ce3d84b109c
  Running setup.py bdist_wheel for blessings ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/a5/7c/ba/e52b14bbd1b8cdeeb0771b03e1cca9b9d438c6e0054144a508
  Running setup.py bdist_wheel for charm-tools ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/ae/bd/7c/bd79556288784e961db32f776e27eff64a306b896a74595b7e
  Running setup.py bdist_wheel for juju-deployer ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/82/42/92/aacc4a7123ab4873b6211882f6e99caeac679709dec42ff987
  Running setup.py bdist_wheel for lazr.authentication ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/07/2b/c8/9cd51613d0f46d58481683b2e2b58ecb08d47ecc93596e83c3
  Running setup.py bdist_wheel for websocket-client ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/d1/5e/dd/93da015a0ecc8375278b05ad7f0452eff574a044bcea2a95d2
  Running setup.py bdist_wheel for launchpadlib ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/d4/dc/2d/e294471ccc99a09ee4b7ec8b8ecff5cd84b72d6836879d94fa
  Running setup.py bdist_wheel for cheetah ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/e9/63/a7/e7eb3181fe51fef80412ed66869e8c6cff41cf531efb2b34fa
  Running setup.py bdist_wheel for pyyaml ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/4a/bf/14/d79994d19a59d4f73efdafb8682961f582d45ed6b459420346
  Running setup.py bdist_wheel for libcharmstore ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/f9/61/52/38797fdc535359248e13591048907d72d3e8309645315d9a41
  Running setup.py bdist_wheel for ruamel.yaml ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/e2/d8/5f/415a3580eb8fd56bee276e4a8787bbf1e99cbdae92515c2cd4
  Running setup.py bdist_wheel for pathspec ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/05/fc/50/1a7e8fc57b03fe4c1299f1cf04e89ac8606614769ca65a9f5f
  Running setup.py bdist_wheel for colander ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/f5/5f/8a/3f8b66a87bed21e00938a1801b6574fa1212c2cc1f6ee5f85f
  Running setup.py bdist_wheel for secretstorage ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/01/34/53/764cf44dfd692de5d3539d185498761970439ea61ec22c98a5
  Running setup.py bdist_wheel for jujuclient ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/9f/e3/54/9ab05193db7e73063e9fad722e23439453fdf82df0160b77cf
  Running setup.py bdist_wheel for httplib2 ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/ca/ac/5f/749651f7925b231103f5316cacca82a487810c22d30f011c0c
  Running setup.py bdist_wheel for oauth ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/99/2a/6e/a33104e6da25c7fea0b4481231f530f1fef08433d9e7eca159
  Running setup.py bdist_wheel for wsgi-intercept ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/f1/83/1b/62c62246d3780bff72470c4c600ed92c006743964beac7ad5e
  Running setup.py bdist_wheel for backports.ssl-match-hostname ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/5d/72/36/b2a31507b613967b728edc33378a5ff2ada0f62855b93c5ae1
  Running setup.py bdist_wheel for lazr.restfulclient ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/45/fd/aa/2fad2690edc2d3b0f8f3a6d0dcb3fdb736cbc0331c6d87b906
  Running setup.py bdist_wheel for lazr.uri ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/de/38/fd/d5b94f4f52624318840180bc1bbf6c5e1e5b0e3f9e1431573b
  Running setup.py bdist_wheel for wadllib ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/05/19/2e/5ba7351bed091401d018d9bce39e9721de07455c36d58c6291
  Running setup.py bdist_wheel for Markdown ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/85/a7/08/33ee5cd488d0365d8bed79d1d4e5c28dd3fbfc7f6d0ad4bb09
  Running setup.py bdist_wheel for pycrypto ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/80/1f/94/f76e9746864f198eb0e304aeec319159fa41b082f61281ffce
  Running setup.py bdist_wheel for theblues ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/31/6a/e2/19e1650cc3c9a602cb7ae8b8030d5ad55aeceeb8ed9d52eab0
  Running setup.py bdist_wheel for functools32 ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/3c/d0/09/cd78d0ff4d6cfecfbd730782a7815a4571cd2cd4d2ed6e69d9
  Running setup.py bdist_wheel for parse ... done
  Stored in directory: /home/ubuntu/.cache/pip/wheels/6d/fb/03/3be9f0e6410f8f06e0b9ef9930d8a6ec5930bd0b765ab1638c
Successfully built bundletester blessings charm-tools juju-deployer lazr.authentication websocket-client launchpadlib cheetah pyyaml libcharmstore ruamel.yaml pathspec colander secretstorage jujuclient httplib2 oauth wsgi-intercept backports.ssl-match-hostname lazr.restful
client lazr.uri wadllib Markdown pycrypto theblues functools32 parse
Installing collected packages: blessings, httplib2, pycrypto, secretstorage, keyring, oauth, wsgi-intercept, zope.interface, lazr.authentication, lazr.uri, wadllib, lazr.restfulclient, pbr, testresources, launchpadlib, Markdown, cheetah, pyyaml, ecdsa, paramiko, requests, 
jujubundlelib, theblues, libcharmstore, ruamel.base, ruamel.ordereddict, ruamel.yaml, pathspec, parse, stuf, otherstuf, path.py, virtualenv, translationstring, colander, functools32, jsonschema, charm-tools, coverage, backports.ssl-match-hostname, websocket-client, jujucli
ent, juju-deployer, funcsigs, mock, nose, simplejson, juju-wait, bundletester
Successfully installed Markdown-2.6.8 backports.ssl-match-hostname-3.5.0.1 blessings-1.6 bundletester-0.11.2 charm-tools-2.2.0 cheetah-2.4.4 colander-1.0b1 coverage-4.3.4 ecdsa-0.13 funcsigs-1.0.2 functools32-3.2.3.post2 httplib2-0.10.3 jsonschema-2.5.1 juju-deployer-0.10.
0 juju-wait-2.5.1 jujubundlelib-0.5.3 jujuclient-0.54.0 keyring-10.3.2 launchpadlib-1.10.5 lazr.authentication-0.1.3 lazr.restfulclient-0.13.1 lazr.uri-1.0.3 libcharmstore-0.0.7 mock-2.0.0 nose-1.3.7 oauth-1.0.1 otherstuf-1.1.0 paramiko-1.18.2 parse-1.8.0 path.py-8.1.2 pat
hspec-0.3.4 pbr-3.0.0 pycrypto-2.6.1 pyyaml-3.11 requests-2.9.1 ruamel.base-1.0.0 ruamel.ordereddict-0.4.9 ruamel.yaml-0.10.23 secretstorage-2.2.1 simplejson-3.10.0 stuf-0.9.16 testresources-2.0.1 theblues-0.3.8 translationstring-1.3 virtualenv-15.1.0 wadllib-1.3.2 websock
et-client-0.40.0 wsgi-intercept-1.5.0 zope.interface-4.4.0

(venv27) ubuntu@osci-bastion:/tmp⟫ juju-wait
Traceback (most recent call last):
  File "/tmp/venv27/bin/juju-wait", line 11, in <module>
    sys.exit(wait_cmd())
  File "/tmp/venv27/local/lib/python2.7/site-packages/juju_wait/__init__.py", line 236, in wait_cmd
    wait(log, args.wait_for_workload, max_wait)
  File "/tmp/venv27/local/lib/python2.7/site-packages/juju_wait/__init__.py", line 272, in wait
    status = get_status()
  File "/tmp/venv27/local/lib/python2.7/site-packages/juju_wait/__init__.py", line 134, in get_status
    json_status = run_or_die([juju_exe(), 'status', '--format=json'], env=env)
  File "/tmp/venv27/local/lib/python2.7/site-packages/juju_wait/__init__.py", line 102, in juju_exe
    if not shutil.which(juju):
AttributeError: 'module' object has no attribute 'which'
ghost commented 6 years ago

Running into the same issue here with py35 environment with tox. This is hindering us from moving to python 3.5 environments in our TravisCI environment.