<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andres Guerrero</title>
    <description>The latest articles on DEV Community by Andres Guerrero (@aguerreroec).</description>
    <link>https://dev.to/aguerreroec</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F296172%2F8e2f030e-19d3-4899-88a5-af33a71198e0.jpg</url>
      <title>DEV Community: Andres Guerrero</title>
      <link>https://dev.to/aguerreroec</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aguerreroec"/>
    <language>en</language>
    <item>
      <title>Troubles with Shapely and Alpine</title>
      <dc:creator>Andres Guerrero</dc:creator>
      <pubDate>Thu, 19 Dec 2019 17:27:26 +0000</pubDate>
      <link>https://dev.to/aguerreroec/troubles-with-shapely-and-alpine-16g5</link>
      <guid>https://dev.to/aguerreroec/troubles-with-shapely-and-alpine-16g5</guid>
      <description>&lt;p&gt;Hello,&lt;br&gt;
im facing some troubles trying to install shapely on my local environment.&lt;/p&gt;

&lt;p&gt;The main reason why so many dependencies are installed via the dockerfile instead on local.txt is in order to find the broken dependency.&lt;/p&gt;

&lt;p&gt;DockerFile&lt;/p&gt;

&lt;p&gt;FROM python:3.7-alpine&lt;/p&gt;

&lt;p&gt;ENV PYTHONUNBUFFERED 1&lt;/p&gt;

&lt;p&gt;RUN apk update \&lt;br&gt;
  # psycopg2 dependencies&lt;br&gt;
  &amp;amp;&amp;amp; apk add --no-cache --virtual build-deps gcc g++ python3-dev musl-dev \&lt;br&gt;
  &amp;amp;&amp;amp; apk add postgresql-dev \&lt;br&gt;
  # Pillow dependencies&lt;br&gt;
  &amp;amp;&amp;amp; apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \&lt;br&gt;
  # CFFI dependencies&lt;br&gt;
  &amp;amp;&amp;amp; apk add libffi-dev py-cffi \&lt;br&gt;
  # Translations dependencies&lt;br&gt;
  &amp;amp;&amp;amp; apk add gettext \&lt;br&gt;
  # &lt;a href="https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell"&gt;https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell&lt;/a&gt;&lt;br&gt;
  &amp;amp;&amp;amp; apk add postgresql-client \&lt;br&gt;
  &amp;amp;&amp;amp; apk add --no-cache gcc \&lt;br&gt;
  &amp;amp;&amp;amp; apk add --no-cache libc-dev&lt;/p&gt;

&lt;p&gt;RUN apk add --no-cache --virtual .build-deps-edge \&lt;br&gt;
        --repository &lt;a href="http://dl-cdn.alpinelinux.org/alpine/edge/community"&gt;http://dl-cdn.alpinelinux.org/alpine/edge/community&lt;/a&gt; \&lt;br&gt;
        --repository &lt;a href="http://dl-cdn.alpinelinux.org/alpine/edge/main"&gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;/a&gt; \&lt;br&gt;
        --repository &lt;a href="http://dl-cdn.alpinelinux.org/alpine/edge/testing"&gt;http://dl-cdn.alpinelinux.org/alpine/edge/testing&lt;/a&gt; \&lt;br&gt;
        gdal-dev geos-dev proj-dev gdal geos proj libcrypto1.1&lt;/p&gt;

&lt;p&gt;RUN pip install -U numpy \&lt;br&gt;
&amp;amp;&amp;amp; pip install python-dotenv \&lt;br&gt;
&amp;amp;&amp;amp; pip install selenium \&lt;br&gt;
&amp;amp;&amp;amp; pip install shapely&lt;/p&gt;

&lt;h1&gt;
  
  
  Install packages
&lt;/h1&gt;

&lt;p&gt;RUN apk add --no-cache libcurl&lt;/p&gt;

&lt;h1&gt;
  
  
  Needed for pycurl
&lt;/h1&gt;

&lt;p&gt;ENV PYCURL_SSL_LIBRARY=openssl&lt;/p&gt;

&lt;h1&gt;
  
  
  Install packages only needed for building, install and clean on a single layer
&lt;/h1&gt;

&lt;p&gt;RUN apk add --no-cache --virtual .build-dependencies build-base curl-dev \&lt;br&gt;
    &amp;amp;&amp;amp; apk add libxml2-dev libxslt-dev linux-headers gettext-dev \&lt;br&gt;
    &amp;amp;&amp;amp; pip install pycurl \&lt;br&gt;
    &amp;amp;&amp;amp; apk del .build-dependencies&lt;/p&gt;

&lt;p&gt;RUN apk add --update chromium&lt;/p&gt;

&lt;p&gt;ENV CHROME_BIN=/usr/bin/chromium-browser&lt;br&gt;
ENV CHROME_PATH=/usr/lib/chromium/&lt;/p&gt;

&lt;p&gt;RUN apk add chromium-chromedriver&lt;/p&gt;

&lt;h1&gt;
  
  
  Requirements are installed here to ensure they will be cached.
&lt;/h1&gt;

&lt;p&gt;COPY ./requirements /requirements&lt;br&gt;
RUN pip install -r /requirements/local.txt&lt;/p&gt;

&lt;p&gt;COPY ./compose/production/django/entrypoint /entrypoint&lt;br&gt;
RUN sed -i 's/\r//' /entrypoint&lt;br&gt;
RUN chmod +x /entrypoint&lt;/p&gt;

&lt;p&gt;COPY ./compose/local/django/start /start&lt;br&gt;
RUN sed -i 's/\r//' /start&lt;br&gt;
RUN chmod +x /start&lt;/p&gt;

&lt;p&gt;WORKDIR /app&lt;/p&gt;

&lt;p&gt;ENTRYPOINT ["/entrypoint"]&lt;/p&gt;

&lt;p&gt;Local.txt&lt;/p&gt;

&lt;p&gt;-r ./base.txt&lt;/p&gt;

&lt;h1&gt;
  
  
  recommendations are commented
&lt;/h1&gt;

&lt;p&gt;ipdb==0.11  # &lt;a href="https://github.com/gotcha/ipdb"&gt;https://github.com/gotcha/ipdb&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Sphinx==1.8.2  # &lt;a href="https://github.com/sphinx-doc/sphinx"&gt;https://github.com/sphinx-doc/sphinx&lt;/a&gt;
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Testing
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ------------------------------------------------------------------------------
&lt;/h1&gt;

&lt;p&gt;mypy==0.650  # &lt;a href="https://github.com/python/mypy"&gt;https://github.com/python/mypy&lt;/a&gt;&lt;br&gt;
pytest==4.0.2  # &lt;a href="https://github.com/pytest-dev/pytest"&gt;https://github.com/pytest-dev/pytest&lt;/a&gt;&lt;br&gt;
pytest-sugar==0.9.2  # &lt;a href="https://github.com/Frozenball/pytest-sugar"&gt;https://github.com/Frozenball/pytest-sugar&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Code quality
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ------------------------------------------------------------------------------
&lt;/h1&gt;

&lt;h1&gt;
  
  
  flake8==3.6.0  # &lt;a href="https://github.com/PyCQA/flake8"&gt;https://github.com/PyCQA/flake8&lt;/a&gt;
&lt;/h1&gt;

&lt;h1&gt;
  
  
  coverage==4.5.2  # &lt;a href="https://github.com/nedbat/coveragepy"&gt;https://github.com/nedbat/coveragepy&lt;/a&gt;
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Django
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ------------------------------------------------------------------------------
&lt;/h1&gt;

&lt;h1&gt;
  
  
  factory-boy==2.11.1  # &lt;a href="https://github.com/FactoryBoy/factory_boy"&gt;https://github.com/FactoryBoy/factory_boy&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;django-debug-toolbar==1.11  # &lt;a href="https://github.com/jazzband/django-debug-toolbar"&gt;https://github.com/jazzband/django-debug-toolbar&lt;/a&gt;&lt;br&gt;
django-extensions==2.1.6&lt;/p&gt;

&lt;h1&gt;
  
  
   django-coverage-plugin==1.6.0  # &lt;a href="https://github.com/nedbat/django_coverage_plugin"&gt;https://github.com/nedbat/django_coverage_plugin&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;pytest-django==3.4.4  # &lt;a href="https://github.com/pytest-dev/pytest-django"&gt;https://github.com/pytest-dev/pytest-django&lt;/a&gt;&lt;br&gt;
pycurl==7.43.0.3&lt;br&gt;
wptools==0.4.17&lt;/p&gt;

&lt;h1&gt;
  
  
  For the Soap Client
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ------------------------------------------------------------------------------
&lt;/h1&gt;

&lt;p&gt;lxml==4.4.1&lt;br&gt;
zeep==3.4.0&lt;/p&gt;

&lt;h1&gt;
  
  
  For Selenium
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ------------------------------------------------------------------------------
&lt;/h1&gt;

&lt;h1&gt;
  
  
  urllib3==1.25.3
&lt;/h1&gt;

&lt;p&gt;selenium==3.141.0&lt;/p&gt;

&lt;p&gt;Base.txt&lt;br&gt;
shapely==1.6.4.post2&lt;br&gt;
Cython==0.29.14&lt;br&gt;
aniso8601==3.0.2&lt;br&gt;
argon2-cffi==19.1.0  # &lt;a href="https://github.com/hynek/argon2_cffi"&gt;https://github.com/hynek/argon2_cffi&lt;/a&gt;&lt;br&gt;
googlemaps==3.0.2&lt;br&gt;
graphene==2.1.5&lt;br&gt;
graphene-django==2.3.0&lt;br&gt;
graphql-core==2.1&lt;br&gt;
graphql-relay==0.4.5&lt;br&gt;
numpy==1.16.3&lt;br&gt;
pandas==0.24.2&lt;br&gt;
promise==2.2.1&lt;br&gt;
psycopg2-binary==2.8.2&lt;br&gt;
pytz==2019.1&lt;br&gt;
requests==2.21.0&lt;br&gt;
Rx==1.6.1&lt;br&gt;
singledispatch==3.4.0.3&lt;br&gt;
six==1.12.0&lt;br&gt;
sqlparse==0.3.0&lt;br&gt;
sentry-sdk==0.7.14 # it should be only in production&lt;br&gt;
beautifulsoup4==4.7.1&lt;/p&gt;

&lt;h1&gt;
  
  
  Django
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ------------------------------------------------------------------------------
&lt;/h1&gt;

&lt;p&gt;Django==2.2&lt;br&gt;
django-constance==2.4.0&lt;br&gt;
django-environ==0.4.5&lt;br&gt;
django-graphql-geojson==0.1.4&lt;br&gt;
django-picklefield==2.0&lt;br&gt;
django-graphql-jwt==0.2.2&lt;/p&gt;

&lt;p&gt;Output&lt;/p&gt;

&lt;p&gt;Collecting shapely Downloading &lt;a href="https://files.pythonhosted.org/packages/a2/fb/7a7af9ef7a35d16fa23b127abee272cfc483ca89029b73e92e93cdf36e6b/Shapely-1.6.4.post2.tar.gz"&gt;https://files.pythonhosted.org/packages/a2/fb/7a7af9ef7a35d16fa23b127abee272cfc483ca89029b73e92e93cdf36e6b/Shapely-1.6.4.post2.tar.gz&lt;/a&gt; (225kB) OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']&lt;/p&gt;

&lt;p&gt;Does anyone know why is this happening?&lt;/p&gt;

&lt;p&gt;Btw, i've tried install shapely[vectorized] without success&lt;/p&gt;

&lt;p&gt;Reference: &lt;a href="https://stackoverflow.com/questions/59410626/linux-alpine-oserror-could-not-find-library-geos-c-or-load-any-of-its-variants"&gt;https://stackoverflow.com/questions/59410626/linux-alpine-oserror-could-not-find-library-geos-c-or-load-any-of-its-variants&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>docker</category>
      <category>python</category>
      <category>django</category>
    </item>
  </channel>
</rss>
