28mm / blast-radius

Interactive visualizations of Terraform dependency graphs using d3.js
https://28mm.github.io/blast-radius-docs/
MIT License
2.04k stars 258 forks source link

Installation fails while building wheel for BlastRadius #2

Closed icornett closed 6 years ago

icornett commented 6 years ago

I attempted to use pip3 to install this app, and didn't find the app due to it being named "BlastRadius" and not "blast-radius" in the pip directory.

Once I was able to find the correct casing for the app, the installer yielded the following:

$ sudo pip3 install BlastRadius Collecting BlastRadius Using cached BlastRadius-0.1.4.tar.gz Requirement already satisfied: Flask in /usr/local/lib/python3.5/dist-packages (from BlastRadius) Requirement already satisfied: jinja2 in /usr/lib/python3/dist-packages (from BlastRadius) Requirement already satisfied: pyhcl in /usr/local/lib/python3.5/dist-packages (from BlastRadius) Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from BlastRadius) Requirement already satisfied: BeautifulSoup4 in /usr/local/lib/python3.5/dist-packages (from BlastRadius) Requirement already satisfied: itsdangerous>=0.21 in /usr/local/lib/python3.5/dist-packages (from Flask->BlastRadius) Requirement already satisfied: click>=2.0 in /usr/local/lib/python3.5/dist-packages (from Flask->BlastRadius) Requirement already satisfied: Werkzeug>=0.7 in /usr/local/lib/python3.5/dist-packages (from Flask->BlastRadius) Requirement already satisfied: MarkupSafe in /usr/lib/python3/dist-packages (from jinja2->BlastRadius) Requirement already satisfied: ply==3.10 in /usr/local/lib/python3.5/dist-packages (from pyhcl->BlastRadius) Building wheels for collected packages: BlastRadius Running setup.py bdist_wheel for BlastRadius ... error Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-build-4gaediim/BlastRadius/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" bdist_wheel -d /tmp/tmpw8ouc3sjpip-wheel- --python-tag cp35: running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/blastradius copying blastradius/init.py -> build/lib/blastradius copying blastradius/graph.py -> build/lib/blastradius copying blastradius/util.py -> build/lib/blastradius creating build/lib/blastradius/handlers copying blastradius/handlers/init.py -> build/lib/blastradius/handlers copying blastradius/handlers/apply.py -> build/lib/blastradius/handlers copying blastradius/handlers/dot.py -> build/lib/blastradius/handlers copying blastradius/handlers/plan.py -> build/lib/blastradius/handlers copying blastradius/handlers/terraform.py -> build/lib/blastradius/handlers creating build/lib/blastradius/server copying blastradius/server/init.py -> build/lib/blastradius/server copying blastradius/server/server.py -> build/lib/blastradius/server error: can't copy 'blastradius/pycache': doesn't exist or not a regular file


Failed building wheel for BlastRadius Running setup.py clean for BlastRadius Failed to build BlastRadius Installing collected packages: BlastRadius Running setup.py install for BlastRadius ... error Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-build-4gaediim/BlastRadius/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-kw55m4su-record/install-record.txt --single-version-externally-managed --compile: running install running build running build_py creating build creating build/lib creating build/lib/blastradius copying blastradius/init.py -> build/lib/blastradius copying blastradius/graph.py -> build/lib/blastradius copying blastradius/util.py -> build/lib/blastradius creating build/lib/blastradius/handlers copying blastradius/handlers/init.py -> build/lib/blastradius/handlers copying blastradius/handlers/apply.py -> build/lib/blastradius/handlers copying blastradius/handlers/dot.py -> build/lib/blastradius/handlers copying blastradius/handlers/plan.py -> build/lib/blastradius/handlers copying blastradius/handlers/terraform.py -> build/lib/blastradius/handlers creating build/lib/blastradius/server copying blastradius/server/init.py -> build/lib/blastradius/server copying blastradius/server/server.py -> build/lib/blastradius/server error: can't copy 'blastradius/pycache': doesn't exist or not a regular file

----------------------------------------

Command "/usr/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-build-4gaediim/BlastRadius/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-kw55m4su-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-4gaediim/BlastRadius/

the directory exists, is there a globbing issue with your installer path?

28mm commented 6 years ago

Hi Ian,

I'm initially unable to reproduce (centos 7 and macos). Since I'm not super familiar with setuptools, it's not immediately obvious to me where it's going wrong...

Can you elaborate on your environment? I'm interested mostly in your os, and any particulars of the python distribution in use. That should help me reproduce.

Thanks!

icornett commented 6 years ago

Hi Patrick, I’m running on Ubuntu Bash on Windows 10 build 1709, this build uses Ubuntu 16.04 as the distro.

ian@Redapt-324:~$ python --version Python 2.7.12

ian@Redapt-324:~$ python3 --version Python 3.5.2

Hope this helps! From: Patrick McMurchie [mailto:notifications@github.com] Sent: Thursday, November 30, 2017 11:43 AM To: 28mm/blast-radius blast-radius@noreply.github.com Cc: Ian Cornett icornett@redapt.com; Author author@noreply.github.com Subject: Re: [28mm/blast-radius] Installation fails while building wheel for BlastRadius (#2)

Hi Ian,

I'm initially unable to reproduce (centos 7 and macos). Since I'm not super familiar with setuptools, it's not immediately obvious to me where it's going wrong...

Can you elaborate on your environment? I'm interested mostly in your os, and any particulars of the python distribution in use. That should help me reproduce.

Thanks!

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/28mm/blast-radius/issues/2#issuecomment-348298722, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AfOtFG7u6mHejz1u4LN-V4LcBLAqBaJtks5s7wVagaJpZM4QxBRR.

28mm commented 6 years ago

This appears to be an issue with the way package_data is specified in setup.py, and is limited to certain versions of setuptools.

I am able to work-around the issue in my Ubuntu test environment, by upgrading setuptools. Does the below also work in your environment?

[...]$ pip3 install --upgrade setuptools
[...]$ pip3 install blastradius

The problem seems to be that package_data is defined with a bunch of globs, that don't discriminate against directories. the "bad" versions of setuptools expect only regular files, and not directories.

package_data={
      '': ['*', '*/*', '*/*/*'], # yikes
}

Working on a more permanent fix, that works with more versions of setuptools.

icornett commented 6 years ago

That seemed to work, thanks for your help and quick response!

From: Patrick McMurchie [mailto:notifications@github.com] Sent: Thursday, November 30, 2017 12:57 PM To: 28mm/blast-radius blast-radius@noreply.github.com Cc: Ian Cornett icornett@redapt.com; Author author@noreply.github.com Subject: Re: [28mm/blast-radius] Installation fails while building wheel for BlastRadius (#2)

This appears to be an issue with the way package_data is specified in setup.py, and is limited to certain versions of setuptools.

I am able to work-around the issue in my Ubuntu test environment, by upgrading setuptools. Does the below also work in your environment?

[...]$ pip3 install --upgrade setuptools

[...]$ pip3 install blastradius

The problem seems to be that package_data is defined with a bunch of globs, that don't discriminate against directories. the "bad" versions of setuptools expect only regular files, and not directories.

package_data={

  '': ['*', '*/*', '*/*/*'], # yikes

}

Working on a more permanent fix, that works with more versions of setuptools.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/28mm/blast-radius/issues/2#issuecomment-348318464, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AfOtFPlX9uYIHIaKeeG7vh7t7Gdz9rrRks5s7xatgaJpZM4QxBRR.