Skip to content
Snippets Groups Projects
Commit 851b52b0 authored by Egli Adrian (IT-SCI-API-PFI)'s avatar Egli Adrian (IT-SCI-API-PFI)
Browse files

Windows support cairo solved: workaround: auto install (see setup.py)

parent f79e81a9
No related branches found
No related tags found
No related merge requests found
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Main module.""" """Main module."""
...@@ -2,6 +2,17 @@ ...@@ -2,6 +2,17 @@
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from numpy import array from numpy import array
import os
if os.name=='nt':
import site
import ctypes.util
default_os_path = os.environ['PATH']
os.environ['PATH'] = ''
for s in site.getsitepackages():
os.environ['PATH'] = os.environ['PATH'] + ';' + s + '\\cairo'
os.environ['PATH'] = os.environ['PATH'] + ';' + default_os_path
if ctypes.util.find_library('cairo') is not None:
print("cairo installed: OK")
class GraphicsLayer(object): class GraphicsLayer(object):
def __init__(self): def __init__(self):
......
...@@ -6,7 +6,12 @@ import numpy as np ...@@ -6,7 +6,12 @@ import numpy as np
# from flatland.utils.svg import Track, Zug # from flatland.utils.svg import Track, Zug
import time import time
import io import io
from cairosvg import svg2png from cairosvg import svg2png
from IPython.display import SVG
from flatland.core.transitions import RailEnvTransitions from flatland.core.transitions import RailEnvTransitions
# from copy import copy # from copy import copy
...@@ -234,6 +239,8 @@ class PILSVG(PILGL): ...@@ -234,6 +239,8 @@ class PILSVG(PILGL):
def pilFromSvgFile(self, sfPath): def pilFromSvgFile(self, sfPath):
with open(sfPath, "r") as fIn: with open(sfPath, "r") as fIn:
bytesPNG = svg2png(file_obj=fIn, output_height=self.nPixCell, output_width=self.nPixCell) bytesPNG = svg2png(file_obj=fIn, output_height=self.nPixCell, output_width=self.nPixCell)
image = SVG(url=sfPath)
with io.BytesIO(bytesPNG) as fIn: with io.BytesIO(bytesPNG) as fIn:
pil_img = Image.open(fIn) pil_img = Image.open(fIn)
......
...@@ -20,10 +20,10 @@ xarray==0.11.3 ...@@ -20,10 +20,10 @@ xarray==0.11.3
matplotlib==3.0.2 matplotlib==3.0.2
PyQt5==5.12 PyQt5==5.12
Pillow==5.4.1 Pillow==5.4.1
# CairoSVG==2.3.1 # see setup.py pycairo==1.18.1
# pycairo==1.18.1 CairoSVG==2.3.1
msgpack==0.6.1 msgpack==0.6.1
svgutils==0.3.1 svgutils==0.3.1
screeninfo==0.3.1 screeninfo==0.3.1
\ No newline at end of file
...@@ -4,6 +4,12 @@ ...@@ -4,6 +4,12 @@
"""The setup script.""" """The setup script."""
import os import os
from setuptools import setup, find_packages from setuptools import setup, find_packages
import sys
import os
import platform
with open('README.rst') as readme_file: with open('README.rst') as readme_file:
readme = readme_file.read() readme = readme_file.read()
...@@ -11,6 +17,54 @@ with open('README.rst') as readme_file: ...@@ -11,6 +17,54 @@ with open('README.rst') as readme_file:
with open('HISTORY.rst') as history_file: with open('HISTORY.rst') as history_file:
history = history_file.read() history = history_file.read()
# install pycairo
if os.name == 'nt':
p = platform.architecture()
is64bit = p[0] == '64bit'
if sys.version[0:3] == '3.5':
if is64bit:
url = 'https://download.lfd.uci.edu/pythonlibs/q5gtlas7/pycairo-1.18.0-cp35-cp35m-win_amd64.whl'
else:
url = 'https://download.lfd.uci.edu/pythonlibs/q5gtlas7/pycairo-1.18.0-cp35-cp35m-win32.whl'
if sys.version[0:3] == '3.6':
if is64bit:
url = 'https://download.lfd.uci.edu/pythonlibs/q5gtlas7/pycairo-1.18.0-cp36-cp36m-win_amd64.whl'
else:
url = 'https://download.lfd.uci.edu/pythonlibs/q5gtlas7/pycairo-1.18.0-cp36-cp36m-win32.whl'
if sys.version[0:3] == '3.7':
if is64bit:
url = 'https://download.lfd.uci.edu/pythonlibs/q5gtlas7/pycairo-1.18.0-cp37-cp37m-win_amd64.whl'
else:
url = 'https://download.lfd.uci.edu/pythonlibs/q5gtlas7/pycairo-1.18.0-cp37-cp37m-win32.whl'
try:
import pycairo
except:
call_cmd = "pip install " + url
os.system(call_cmd)
import site
import ctypes.util
default_os_path = os.environ['PATH']
os.environ['PATH'] = ''
for s in site.getsitepackages():
os.environ['PATH'] = os.environ['PATH']+';' + s+'\\cairo'
os.environ['PATH'] = os.environ['PATH']+';' + default_os_path
print(os.environ['PATH'])
if ctypes.util.find_library('cairo')is not None:
print("cairo installed: OK")
else:
try:
import pycairo
except:
os.system("pip install pycairo==1.18.1")
# Gather requirements from requirements_dev.txt # Gather requirements from requirements_dev.txt
# TODO : We could potentially split up the test/dev dependencies later # TODO : We could potentially split up the test/dev dependencies later
install_reqs = [] install_reqs = []
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment