# Difference between revisions of "Run Gramps40 for Windows from source using Python 2.7.3"

## Introduction

This page gives information how to run Gramps 4.0.x from source on a Windows system. After some trials there was the result to focus on 32 bit Python 2.7.3 (since July 2013 also 2.7.5 and since December 2013 also 2.7.6) because of several issues related to Gtk and database connection.

There are some parts marked as "TODO ISSUE" because of known issues.

There are some parts marked as "TODO WORK" because it's not done yet done (work in progress).

 This is a work in progress... Nobody guarantees anything at all!Any comments and help (e.g. on wiki pages) are welcome.

Last update: 19.01.2014 (introducing the new PyGI3.10.2-AIO ==> Work in progress!!)

## Python

• Python 2.7 or greater, Python 3.2 or greater (python version cannot be mixed)

We use: Python 2.7.6 32 bit from http://www.python.org/getit/ (python-2.7.6.msi) for all examples assumed to be installed into "C:\Python27".
Comment: It's also possible to use Python 2.7.3 or 2.7.5 but always 32 bit (no experiences for 64 bit versions)
Comment: For Win7 user it's easier to don't use "C:\Program Files (x86)\..." because for every change somewhere in this folder one has to activate the administrator's rights again and again.

### Gtk, pyobject

• GTK 3.0 or greater
• pygobject 3.3.2 or greater
• cairo, pango, pangocairo with instrospection bindings (the gi packages)
• librsvg2 (svg icon view)
• xdg-utils

With the help of an open source programmer we get this package (here again the authors personally thank for his good job supporting Gramps in this way - see there to know more about of his other work: http://opensourcepack.blogspot.de/2013/01/mypaint-and-pygi.html):

• 19.01.2014: pygi-aio-3.10.2-win32_rev15-setup.exe as complete installer from http://sourceforge.net/projects/pygobjectwin32/files/ (may be there is still a newer version available)
• Select the following libraries during installation process (these are the needed libraries for Gramps, one may choose other for additional usages):
• gdk-pixbuf (version 2.30.2 in pygi-aio-3.10.2-win32_rev15-setup.exe)
• libgexiv2 (version 0.7.0 in pygi-aio-3.10.2-win32_rev15-setup.exe)
• goocanvas (version 2.0.2 in pygi-aio-3.10.2-win32_rev15-setup.exe)
• gtk+ (version 3.10.6 in pygi-aio-3.10.2-win32_rev15-setup.exe)
• gtkspell (version 3.0.3 in pygi-aio-3.10.2-win32_rev15-setup.exe)
• osm-gps-map (version 1.0.1 in pygi-aio-3.10.2-win32_rev15-setup.exe)
• pango (version 1.36.1 in pygi-aio-3.10.2-win32_rev15-setup.exe)
• webkitgtk (version 1.10.2 in pygi-aio-3.10.2-win32_rev15-setup.exe)
• To run Gramps there is no need for the optional provided developer tools.
• Don't use the older GTK 3.8.6 (Select "No" as answer at the additional question dialogue!)
• 02.12.2013 (Deprecated): pygi-aio-3.10.2-win32_rev7.7z from http://sourceforge.net/projects/pygobjectwin32/files/
• Deprecated versions before 15.12.2013 see history

• All gtk binaries are included in the installer package and right placed.
• No need for processors having an instruction set SSSE3.

Checking the state of the package can be done by:

• start Python (e. g.: C:\Python27>python)
• and than call the functions as follows. There should be the same results.
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win
32
>>> from gi.repository import Gtk
>>> Gtk.get_major_version()
3L
>>> Gtk.get_minor_version()
10L
>>> Gtk.get_micro_version()
6L
>>> from gi.repository import GObject
>>> GObject.pygobject_version
(3, 10, 2)


### ICU/PyICU

This package is a "must be".

• Copy all files from PYICU_py27_win32.zip\lib\site-packages to "C:\Python27\Lib\site-packages"
• Now we have to place the binaries from PYICU_py27_win32.zip\bin to a folder found by Python / Gramps:
• First Option: Somewhere on hard disc e.g. "C:\icu". In this case we have to add this path to the environment variable PATH.
• Second Option: Into the same folder as python.exe. That's a good solution for a package, because we don't need any changes for the environment variable PATH.

To check ICU/PyICU just try it in Python (don't forget the environment variable PATH):

Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win
32
>>> import icu
>>> print icu.ICU_VERSION
50.1.2
>>> print icu.VERSION
1.5


Comment (19.01.2014): There are other unofficial PyICU versions available some where in the web. But be careful to use other than the one above. Unexpected issues may be caused.

### language-pack-gnome-xx

• Translation of GTK elements to your language, with xx your language code eg for Dutch you need language-pack-gnome-nl. The translation of the Gramps strings is included with the source code.

The necessary package related to our GTK package will be provided also by the programmer of the GTK package (see above).

### osmgpsmap

==> osmgpsmap is an optional package even the README requires "strongly recommended".

• If you don't have osmgpsmap there will be no message during the start-up of Gramps about a missing osmgpsmap. The only thing is the missing Geographic view in Gramps.
• There is a warning from the provider of this package: "window resizing crashed". But it seems this doesn't happens for Gramps - may be in rare cases only.

### GraphViz

• Enable creation of graphs using GraphViz engine.
• Without this no beautiful graphs can be created.
• Obtain it from: http://www.graphviz.org

19.01.2014: Following the information on http://www.graphviz.org we get the current package from http://www.graphviz.org/Download_windows.php: graphviz-2.36.zip

For the examples we copy the complete content to "C:\Program Files (x86)\Graphviz2.36\".

To give Gramps the access to this software we have to add the directory of the related binaries to the PATH environment variable. But to prevent trouble with the used dll versions between GraphViz and Gramps it's strongly recommended to add this at the end of PATH

SET PATH=%PATH%;C:\Program Files (x86)\Graphviz2.30\bin

 Using "Graph View" GraphViz 2.34 or higher forces an error (#7109). At #7109 you will find a patch to solve the issue. Without this patch and a still unsolved issue one should use graphviz-2.30.1.zip from http://www.graphviz.org/pub/graphviz/stable/windows/. The handling is the same as above

Comments: GraphViz will be used e. g. for any report in Reports --> Graphs. Without GraphViz there is only one output format "Graphvi File". If all is OK there are several output formats available (e. g. "PDF (Graphviz)", "JPEG image" etc.).

### pyexiv2

24.02.2013: Will not be used any more, replaced by GExiv2

### ghostscript ghostview

Optional packages

• Python / Gramps needs to know the folder where the binaries are stored (default: "C:\Program Files (x86)\gs\gs9.10\bin") by defining the environment variable PATH.
• As option it's possible to place the content of the binary folder (default: "C:\Program Files (x86)\gs\gs9.10\bin") into the same folder as python.exe to prevent any changes of the environment variable PATH.
• From http://pages.cs.wisc.edu/~ghost/gsview/get50.htm download and run gsv50w32.exe (e. g. into the default install folder: C:\Program Files (x86)\Ghostgum).
• Python / Gramps needs to know the folder where the binaries are stored (default: "C:\Program Files (x86)\Ghostgum\gsview") by defining the environment variable PATH.
Comment: This tool will be used to display .ps files as optional result of reports. So at least it's like e.g. any a .pdf viewer or .rtf viewer. It would be possible to include it into any Gramps package. But as normally nobody would include a .pdf viewer or .rtf viewer into a Gramps package I won't suggest to do that for a .ps viewer.

### GExiv2

Is an optional package. 19.01.2014: GExiv2 is integrated part of the GTK package.

### gtkspell

• Enable spell checking in the notes.
• Gtkspell depends on enchant.
• A version of gtkspell with gobject introspection is needed, so minimally version 3.0.0.

19.01.2014: The basics to use a spell are already included in the here used GTK package.

 At least the content of pygi-aio-3.10.2-win32_rev15-setup.exe used by Gramps forces an crash if libenchant_voikko.dll is available!It is strongly requested to delete ...\Lib\site-packages\gnome\lib\enchant\libenchant_voikko.dll.

The only missed things may be special myspell dictionaries (comment: Gramps uses myspell only!) . These can be found here:

• from http://extensions.openoffice.org/ download the language packages of your choice. Included in the there provided .oxt files one can extract by using a program like 7-Zip the necessary .aff and .dic files.
• Or you may find these files (.aff and .dic) as part of any GrampsAOI installation in "..\share\enchant\myspell"

For our example all files *.aff *.dic have to be stored into "C:\Python27\Lib\site-packages\gnome\share\enchant\myspell".
TODO ISSUE/WORK There are still some issues using spell (as per 019.01.2014):

• Open the note editor having spell activated slows down the os extremely as longer as larger the text. This may cost more than 45 seconds for a text having 400 lines and 17000 characters. So it's strongly suggested to don't global activate "Enable spelling checker" in Preferences!
• Up to Gramps 4.0.2 there is a spell related issue #7339 which has to be prevented by the there provided patch!

### rcs

--> will not be used
There is still the same issue as in Gramps 3.0.1 and later 3124.
Currently there is no special code like 'if win(): DON'T USE RCS'.
It seems to be working but the reload from an archived database doesn't run.
Finally it doesn't matter to install rcs.


### PIL

• Python Image Library is needed to convert non jpg images to jpg so as to include them in LaTeX output

### ttf-freefont

Information from README: More font support in the reports

07.03.2013 TODO WORK: How to use for the Windows environment. It's assumed that the fonts should be added to the Graphviz environment, but not yet tested.

### gir-webkit

• GObject introspection data of WebKit is required for the hidden view 'Htmlview', which allows websites to be opened in Gramps.
• Users can unhide the view in the plugin manager.
• A html renderer must be installed to use the view.
•  !! PACKAGERS, Test if on your distribution webkit and Gramps is stable. If you obtain crashes, patch src/plugins/view/htmlrenderer.py and src/plugins/view/geoview.gpr.py, so as to remove: from gi.repository import WebKit as webkit

19.01.2014: Webkit is an integrated part of the GTK package.

### goocanvas

• Required for the Graphview plugin

19.01.2014: It's is part of the current GTK package

## Debug Environment

### MinGW

TODO WORK: description

### Eclipse

TODO WORK: description

### dependency viewer

TODO WORK: description

## Start Gramps 4.0.x

### Get Gramps sources

For all examples it's assumed that the Gramps source (e.g. from the GIT repository http://git.code.sf.net/p/gramps/source/ or the .tar.gz from from http://sourceforge.net/projects/gramps/files/Stable/../) will be stored into "C:\Gramps4.0".

It's helpful to use a special client for Windows to get these sources. Also if one gets sources only such a tool provides the possibility of history search and or compare and also to mark differences between the current version on the computer and the repository.

There are good experiences using TortoiseGIT from http://code.google.com/p/tortoisegit/.

### Prepare Setup

[Changed 03.12.2013] To run setup.py we need the translation tool msgfmt.exe having a proper version. The installer for poedit (http://sourceforge.net/projects/poedit/files/poedit/1.5/poedit-1.5.7-setup.exe/download) provides msgfmt.exe in version 0.18.1.0.

For all examples we assume poedit to be installed to: "C:\Program Files (x86)\Poedit" (The default path of the installer).

### Run Setup Build

Running "setup.py build" generates necessary translation files (*.mo) and the const.py from const.py.in

Here is an example batch file to run this:


C:
cd C:\Gramps4.0
set path=C:\Python27;C:\Program Files (x86)\Poedit\bin;%path%
C:\Python27\python setup.py build
pause



The result should look like this:

running build
Compiling po\bg.po >> share/locale/bg/LC_MESSAGES.
Compiling po\ca.po >> share/locale/ca/LC_MESSAGES.
Compiling po\cs.po >> share/locale/cs/LC_MESSAGES.
Compiling po\da.po >> share/locale/da/LC_MESSAGES.
Compiling po\de.po >> share/locale/de/LC_MESSAGES.
Compiling po\el.po >> share/locale/el/LC_MESSAGES.
Compiling po\en_GB.po >> share/locale/en_GB/LC_MESSAGES.
Compiling po\es.po >> share/locale/es/LC_MESSAGES.
Compiling po\fi.po >> share/locale/fi/LC_MESSAGES.
Compiling po\fr.po >> share/locale/fr/LC_MESSAGES.
Compiling po\he.po >> share/locale/he/LC_MESSAGES.
Compiling po\hr.po >> share/locale/hr/LC_MESSAGES.
Compiling po\hu.po >> share/locale/hu/LC_MESSAGES.
Compiling po\it.po >> share/locale/it/LC_MESSAGES.
Compiling po\ja.po >> share/locale/ja/LC_MESSAGES.
Compiling po\lt.po >> share/locale/lt/LC_MESSAGES.
Compiling po\nb.po >> share/locale/nb/LC_MESSAGES.
Compiling po\nl.po >> share/locale/nl/LC_MESSAGES.
Compiling po\nn.po >> share/locale/nn/LC_MESSAGES.
Compiling po\pl.po >> share/locale/pl/LC_MESSAGES.
Compiling po\pt_BR.po >> share/locale/pt_BR/LC_MESSAGES.
Compiling po\pt_PT.po >> share/locale/pt_PT/LC_MESSAGES.
Compiling po\ru.po >> share/locale/ru/LC_MESSAGES.
Compiling po\sk.po >> share/locale/sk/LC_MESSAGES.
Compiling po\sl.po >> share/locale/sl/LC_MESSAGES.
Compiling po\sq.po >> share/locale/sq/LC_MESSAGES.
Compiling po\sv.po >> share/locale/sv/LC_MESSAGES.
Compiling po\uk.po >> share/locale/uk/LC_MESSAGES.
Compiling po\vi.po >> share/locale/vi/LC_MESSAGES.
Compiling po\zh_CN.po >> share/locale/zh_CN/LC_MESSAGES.
running build_py
....
copying gramps\gen\const.py -> build\lib\gramps\gen
running build_scripts
creating build\scripts-2.7
copying and adjusting scripts\gramps -> build\scripts-2.7
C:\Gramps4.0>pause
Hit any key . . .


Possible exception:
setup.py stops because of a missing "intltool-merge".
setup.py assumes for Windows to have either non installed "intltools" or complete installed "intltools". In some rare situations it could be possible to have an incomplete installation of these tools. But because we don't need these tools to run Gramps itself it's necessary to edit setup.py in such cases: Insert "return (0, 0, 0)" direct behind "if sys.platform == 'win32':" in "def intltool_version():".

     ...
def intltool_version():
'''
Return the version of intltool as a tuple.
'''
if sys.platform == 'win32':
return (0, 0, 0)
cmd = ["perl", "-e print qx(intltool-update --version) =~ m/(\d+.\d+.\d+)/;"]
...


• After running this it would be possible to run Gramps from "C:\Gramps4.0" or from some where "C:\Gramps4.0\build\...".
• For easy handling of sources from the repository the author prefers to run it from "C:\Gramps4.0".
• It's also possible to generate .mo files by command line jobs. (TODO WORK: description)
• It's also possible to manipulate const.py manually. (TODO WORK: description)

### Work arounds

TODO ISSUE: Each work around to be removed if not necessary any more

19.01.2014: To get the license information within the Help-About dialogue one has to copy the file COPYING from the Gramps sources root (e.g. C:\Gramps4.0) into the to be generated folder <gramps root>\build\data (e.g.: C:\Gramps4.0\build\data).

### Overall appearance

A short description 'How to control the general view of Gramps using GTK themes':

• For our example theme packages have to be stored in "C:\Python27\Lib\site-packages\gnome\share\themes". Per default with the here used GTK package there are three packages available:
• Bluebird
• Default
• Emacs
• Evolve
• Greybird
• HighContrast
• Orion

To select one of these themes one has to manipulate the a special settings.ini file. For our example it's placed there:

• C:\Python27\Lib\site-packages\gnome\etc\gtk-3.0\settings.ini
• This example for settings.ini defines the theme "Adwaita" and the font "Segoe UI" having the font size 10:
[Settings]
gtk-theme-name = HighContrast
gtk-font-name = Segoe UI 10


### Start Gramps

At this point we have a basically running Gramps.

Because we didn't add all packages suggested by the README we didn't have the full functionality. Especially some output formats and the geographic view are not available yet (TODO WORK: Add the missing packages having a usable version.)

Because Gramps 4.0 is still under development there are still several issues and crashes (see bug tracker: http://www.gramps-project.org/bugs/view_all_bug_page.php). It's strongly recommended to use test data for validation only!

To run Gramps a batch seems to be helpful:


set LANG=de_DE

@rem may be some time we need an other language
@rem set LANG=de_DE

@rem it's a good idea to have a own GRAMPSHOME
set GRAMPSHOME=C:\Gramps40
@rem we need the path of the Gtk binaries
set path=C:\Goocanvas;C:\Program Files (x86)\gs\gs9.10\bin;C:\icu;%path%;C:\Program Files (x86)\Graphviz2.36\bin

C:
cd C:\Python27

@rem call for all version information (e.g. as background for any issue)
python "C:\Gramps4.0\gramps.py" -v

@rem let's start Gramps
python "C:\Gramps4.0\gramps.py"
pause



"Gramps -v" should show this information now if one uses the gramps-4.0.2.tar.gz from http://sourceforge.net/projects/gramps/files/Stable/4.0.2/:

Gramps Settings:
----------------
python    : 2.7.6
gramps    : 4.0.2
gtk++     : 3.10.6
pygobject : 3.10.2
pango     : 1.36.1
Not using bsddb3
bsddb     : 5.3.0
bsddb.db  : 4.7.25
cairo     : 1.12.16
pycairo   : 1.10.0
osmgpsmap : 1.0
GExiv2    : 0.4
ICU       : 50.1.2
PyICU     : 1.5
o.s.      : win32

Environment settings:
---------------------
LANG      : de_DE.UTF-8
LANGUAGE  : de_DE
GRAMPSI18N: not set
GRAMPSHOME: C:\Gramps40
GRAMPSDIR : not set
PYTHONPATH:
C:\Python27\python27.zip
C:\Python27\DLLs
C:\Python27\lib
C:\Python27\lib\plat-win
C:\Python27\lib\lib-tk
C:\Python27
C:\Python27\lib\site-packages
C:\Python27\lib\site-packages\PIL

Non-python dependencies:
------------------------
Graphviz  : 2.36
Ghostscr. : 9.10

System PATH env variable:
-------------------------
C:\Goocanvas
C:\Program Files (x86)\gs\gs9.10\bin
C:\icu
...


## Known Major Issues

As known per 23.12.2013

• GraphViz 2.34 and later causes an error in Graph View: see http://www.gramps-project.org/bugs/view.php?id=7277 for more details
• 14.12.2013 (Deprecated): <Thumbnail Generator crashes: see http://www.gramps-project.org/bugs/view.php?id=7279 for more details
• no Django
• Spell:
• Opening the note editor having spell activated or activating the spell within the note editor blocks Python / the application for a while (as longer as larger the text). Therefore it's suggested to deactivate the spell checker in Preferences. But it's the same if one toggles this feature or changes the spell language interactive using the right mouse context menu in the Note Editor.
• The spell settings will not be stored.
• The Geographic view and other gtk parts may generate warnings without any other known effect
• WinXP (26.12.13): see information above regarding additional installations