How to Compile QtiPlot for Windows (v 0.9.8.3)
Compiling QtiPlot for windows is not trivial due to lack of detailed documentation from the developer. This is a step-by-step howto to keep record of the "tricks" in order to make the whole process easier in the future.
IMPORTANT NOTE:
The links in this guide were valid in December 2010. It is likely that some of the programs get updated and change their download addresses. I will update them if someone reports broken links.
Similarly, the instructions are given for specific versions available at that time. I expect most of the information to be valid (with trivial changes like changing some path name) if you use newer versions, but I don't test too often. If you succeed in compiling QtiPlot using newer versions and/or other configurations, I ask you to send me an email so that I can update the information in this page.
CLOSED PLUG-INs:
Since Version 0.9.8.4, the author of QtiPlot decided to move certain features of QtiPlot (e.g., Full import of OriginLab® Origin projects, Excel workbooks and Open Document Format spreadsheets, dBase, SQLite and Microsoft Access databases and plot export to image format EMF) to what he calls a "plug-in" system and he does not distribute the code for those plug-ins (the legality of this should be looked at carefully). As a result, it may be difficult or even impossible to compile full-featured binaries for versions >=0.9.8.4
OTHER SOURCES OF INFORMATION:
-
S.Z. has written a nice how-to for compiling v0.9.8.8 (following and updating the instructions given in my how-to for 0.9.8.3). Unfortunately, it does not include some of the features that were moved to closed Plug-ins since version 0.9.8.4.: http://www.staff.science.uu.nl/~zeven101/qtiplot.html
-
You can find another how-to in http://poolinfo.physik.hu-berlin.de/qtiplot-installer/README.html which explains how to compile QtiPlot for windows (thanks to A.K. for pointing it out). But beware that Its approach is slightly different to (and some times incompatible with) the one in this how-to.
-
The following thread was very helpful too (although it deals with compilation on Ubuntu) : http://ubuntuforums.org/showthread.php?p=10134652
Introduction
QtiPlot is a scientific data analysis and plotting tool. It is a free clone of Origin.
The official page for Qtiplot is: http://soft.proindependent.com/qtiplot.html
This how-to recreates the steps I used for compiling qtiplot-0.9.8.3 for windows XP.
Ready to use packages
Important: If you are looking for ready-to-use (i.e., already compiled) packages for QtiPlot under Windows, you may be interested in this page instead.
Motivation
Although QtiPlot is Free (GPL v2), its author provides windows binaries only under a commercial contract.
Of course, given that the sources are GPL'ed, anyone is allowed to compile and redistribute the program by him/herself.
While the official compilation instructions in the QtiPlot web page are correct, they are far from being practical, and there is obvious lack of support from the author to any questions related to compilation problems. In general, the official policy seems (understandably) directed towards encouraging users to pay for a "maintenance contract".
Figuring out the little unexplained details for compilation took me a considerable amount of time and therefore I think it is interesting to document the whole process.
Prerequisites
We start from a pristine windows XP machine.
According to the QtiPlot Manual, we need about 14 libraries installed (Qt, Qwt, QwtPlot3D, liborigin2, muParser, boost, GSL, zlib, libpng, EmfEngine, quazip, QTexEngine, ALGLIB, ExcelFormat) as well as the mingw compiler.
In practice, some of them are included in the qtiplot source distribution and others are bundled in a package called Mingw-Distro. The instructions to have everything set-up are:
Installing Mingw-Distro
This bundle package from http://nuwen.net/mingw.html already provides you with:
- the mingw compiler
- libpng
- zlib
- boost
For installing the distro, do the following:
- Grab the latest release of MinGw-Distro from http://nuwen.net/mingw.html (I used Mingw-6.6.zip)
- uncompress the zip file in c:\Mingw
-
cd c:\Mingw\bin
-
copy make.exe mingw32-make.exe
- Add c:\Mingw\bin to the system PATH environment variable
NOTE ABOUT PATHS: In this how to I indicate the paths into which installing the different libraries and programs. In principle, you can choose different ones, but then you have to be careful about adapting the rest of the instructions accordingly. If you decide to change the paths, keep in mind the following:
1) I strongly advise to stick to suggested names in the case of code that goes into the 3rdparty subdirectory of the QtiPlot sources
2) always avoid using spaces or any non-english character in the pathnames.
Download and unpack Qtiplot sources
- Download Qtiplot from http://soft.proindependent.com/qtiplot.html (qtiplot-0.9.8.3.zip)
- Uncompress it to c:\qtiplot-0.9.8.3
IMPORTANT NOTE: In the following steps, you will modify files under c:\qtiplot-0.9.8.3 . If at some point the instructions are not clear, you can use my copy of the final estate as a reference: (example of modified sources for qtiplot-0.9.8.3)
Installing GSL
There is a pre-compiled windows port of GSL at
http://gnuwin32.sourceforge.net/packages/gsl.htm
- Download the "Binaries" and "Developer" zip files (gsl-1.8-bin.zip and gsl-1.8-lib.zip)
- Create a directory called "gsl" under c:\qtiplot-0.9.8.3\3dparty
- Uncompress both zip files in it. Now the gsl directory structure should look something like:
qtiplot-0.9.8.3 ├── 3rdparty │ ├── gsl │ │ ├── bin │ │ ├── contrib │ │ │ └── gsl ... │ │ ├── include │ │ │ └── gsl │ │ ├── lib │ │ ├── man │ │ │ ├── cat1 │ │ │ └── cat3 │ │ ├── manifest │ │ └── share : : : :
Installing muParser
- Download muParser from http://muparser.sourceforge.net/ (muparser_v132.tar.gz)
- Uncompress it to c:\qtiplot-0.9.8.3\3dparty\muparser (you can use the gzip.exe and tar.exe executables in c:\mingw\bin, or just install 7zip from http://www.7-zip.org/)
- open a command prompt and ...
-
cd c:\qtiplot-0.9.8.3\3dparty\muparser\build
-
make -f makefile.mingw
Installing Qt
I found out that I had to compile Qt from sources (instead of installing the pre-compiled binaries) to avoid an incompatibility with the mingwcompiler from mingw-distro.
- Download the sources package from ftp://ftp.qt.nokia.com/qt/source/ (qt-everywhere-opensource-src-4.6.3.zip)
- uncompress the sources in: c:\qt\4.6.3
- set the following system environment variable: QMAKESPEC=win32-g++
- open a new command prompt and...
-
cd c:\qt\4.6.3
-
configure -release
-
make
- add "C:\Qt\4.6.3\bin" to the system PATH environment variable
NOTE: step 6 will take long time, and step 7 will take VERY long time (it took ~9 hours in my case)
Installing SIP and PyQt
This is optional. If you don't do it, python scripting won't be supported, but QtiPlot will otherwise work.
- Install Python if you don't already have it: download the installation binary from http://python.org/download (I used the "Python2.7 Windows Installer") and install it.
- add the directory where you installed python (e.g. c:\python27) to the system PATH environment variable
- Install SIP:
- Download the source code for SIP from http://www.riverbankcomputing.co.uk/software/sip/download (sip-4.10.5.zip). NOTE (2011-05-24). The mentioned version of sip is no longer available from Riverbank main page (although you may get it from their mercurial repository). Since I got a report that this instructions may not work with newer SIP versions, you can download sip-4.10.5.zip from this server
- uncompress it in c:\sip
-
cd c:\sip
-
python configure.py --platform=win32-g++
-
make
-
make install
- Install PyQt:
- Download the source code for PyQt4 from (http://www.riverbankcomputing.co.uk/software/pyqt/download) (PyQt-win-gpl-4.7.4.zip)
- uncompress it in c:\pyqt
-
cd c:\pyqt
-
python configure.py
-
make
-
make install
Installing liborigin2
This is optional. If you don't do it, importing project files from OriginLab will not be supported, but QtiPlot will otherwise work.
- Download the source package from http://soft.proindependent.com/liborigin2 (http://download.berlios.de/qtiplot/liborigin2-13092010.zip)
- uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\liborigin2
- Download tree.hh from http://tree.phi-sci.com/tree.hh and copy it to c:\qtiplot-0.9.8.3\3dparty\liborigin2\
- Edit c:\qtiplot-0.9.8.3\3dparty\liborigin2\liborigin2.pro and modify the INCLUDEPATH and LIBS variables to look as follows (note that INCLUDEPATH includes "./"):
-
# Path to the folder where the header files of the BOOST C++ libraries are installed
INCLUDEPATH += C:/MinGW/include/boost
INCLUDEPATH += ./
# link statically against a copy of BOOST C++ libraries
LIBS = C:/MinGW/lib/libboost_date_time.a C:/MinGW/lib/libboost_thread.a - Now open a command prompt and...
-
cd c:\qtiplot-0.9.8.3\3dparty\liborigin2
-
qmake
-
make
- now edit c:\qtiplot-0.9.8.3\qtiplot\origin\origin.pri and replace each occurence of "3rdparty/liborigin" with "3rdparty/liborigin2"
Installing EmfEngine
This is optional. If you don't do it, exporting to windows meta files will not be supported, but QtiPlot will otherwise work.
- Download the source package from http://soft.proindependent.com/emf/download.html (EmfEngine-0.8-opensource.zip)
- uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\EmfEngine
- Edit the file c:\qtiplot-0.9.8.3\3dparty\EmfEngine\config.pri and comment the following line:
win32:CONFIG += HAVE_GDI_PLUS
- Now edit the file c:\qtiplot-0.9.8.3\qtiplot\qtiplot.pro and find the following section:
# check if we have EmfEnginge !isEmpty(EMF_ENGINE_LIBS) { DEFINES += EMF_OUTPUT INCLUDEPATH += $$EMF_ENGINE_INCLUDEPATH INCLUDEPATH += /usr/local/include/libEMF LIBS += $$EMF_ENGINE_LIBS win32:LIBS += -lgdiplus unix:LIBS += /usr/local/lib/libEMF.a
- You need to change the following line
win32:LIBS += -lgdiplus
by:win32:LIBS += -lgdi32
- Now open a new command prompt and...
-
cd c:\qtiplot-0.9.8.3\3dparty\EmfEngine
-
qmake
-
make
Installing QuaZip
This is optional. If you don't do it, import from ODF spreadsheets (e.g., OpenOffice .ods files) will not be supported, but QtiPlot will otherwise work.
- Download the source package from http://sourceforge.net/projects/quazip/ (quazip-0.3.zip)
- uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\quazip
- Now open a command prompt and...
-
cd c:\qtiplot-0.9.8.3\3dparty\quazip
-
qmake
-
make
- now create a directory called c:\qtiplot-0.9.8.3\3dparty\quazip\lib and copy the file c:\qtiplot-0.9.8.3\3dparty\quazip\quazip\release\libquazip.a into it. (This step may not be necessary at all, but it won't hurt!)
Installing ExcelFormat
This is optional. If you don't do it, import and export of Excel files will not be supported, but QtiPlot will otherwise work.
- Download the source package from http://www.codeproject.com/KB/office/ExcelFormat.aspx (ExcelFormat_src.zip)
- uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\ExcelFormat
- create a directory called c:\qtiplot-0.9.8.3\3dparty\ExcelFormat\lib
- Now open a command prompt and...
-
cd c:\qtiplot-0.9.8.3\3dparty\ExcelFormat\lib
-
g++ -O2 -Wall -include string.h -c ..\BasicExcel.cpp
-
g++ -O2 -Wall -include string.h -c ..\ExcelFormat.cpp
-
ar rcs libExcelFormat.a BasicExcel.o ExcelFormat.o
- If all was ok, the c:\qtiplot-0.9.8.3\3dparty\ExcelFormat\lib should now contain 3 files: BasicExcel.o , ExcelFormat.o and libExcelFormat.a
Installing QTexEngine
This is optional. If you don't do it, export to TeX files will not be supported, but QtiPlot will otherwise work.
-
Download the source package from http://soft.proindependent.com/qtexengine/ (QTeXEngine-0.3-opensource.zip)
- uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\QTeXEngine
- Now open a command prompt and...
-
cd c:\qtiplot-0.9.8.3\3dparty\QTeXEngine
-
qmake
-
make
Installing ALGLIB
This is optional. If you don't do it, sparse matrices will not be supported, but QtiPlot will otherwise work.
- Download the source package from http://alglib.net/translator/re (alglib-2.6.0.cpp.zip)
- uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\alglib
- Now open a command prompt and...
-
cd c:\qtiplot-0.9.8.3\3dparty\alglib\cpp
-
build.bat mingw
-
now copy the contents of c:\qtiplot-0.9.8.3\3dparty\alglib\cpp\out\ into c:\qtiplot-0.9.8.3\3dparty\alglib\
Compiling Qtiplot
Once all the prerequisites are dealt with, we can compile QtiPlot. The source directory for qtiplot now looks like this (only 3 levels of directories are shown):
qtiplot-0.9.8.3 ├── 3rdparty │ ├── EmfEngine │ ├── gsl │ ├── liborigin │ ├── muparser │ ├── QTeXEngine │ ├── qwt │ ├── qwtplot3d │ └── zlib ├── fitPlugins │ ├── explin │ ├── exp_saturation │ ├── fitRational0 │ ├── fitRational1 │ └── planck_wavelength ├── manual │ ├── docbook-en │ └── html └── qtiplot ├── examples ├── icons ├── src └── translations
- If you don't have docbook and doxygen installed, edit c:\qtiplot-0.9.8.3\qtiplot.pro and delete the line referring to the "manual" subdirectory. This way you won't compile the manual, but you can always download it from the official page (there is even a menu option for that in the qtiplot program itself), or copy the manual directory from an official binary.
- Open a command prompt and:
-
cd c:\qtiplot-0.9.8.3
-
copy build.conf.example build.conf
- Now you have to edit Edit c:\qtiplot-0.9.8.3\build.conf . There are several changes to do:
- Change the lines beginning by "XXXX_INCLUDEPATH" and "win32:XXXX_LIBS" to point to the right paths in your system (in my case, I only had to do changes in the Boost and libpng sections)
- If you didn't install liborigin2, comment out all the lines in the liborigin2 section.
- If you didn't install ExcelFormat, comment out all the lines in the ExcelFormat section.
- If you didn't install QuaZip, comment out all the lines in the QuaZip section.
- If you didn't install EmfEngine, comment out all the lines in the EmfEngine section.
- If you didn't install QTexEngine, comment out all the lines in the QtexEngine section.
- If you didn't install ALGLIB, comment out all the lines in the ALGLIB section.
- If you didn't install SIP+PyQt, comment out the line that says: "SCRIPTING_LANGS += Python".
- Finally, I also modified the "System specific configuration" section to point to the MinGw include and lib paths, but I suspect it is not necessary. Once all the modifications were done, my build.conf file ended up as:
isEmpty( QTI_ROOT ) {
message( "each file including this config needs to set QTI_ROOT to the dir containing this file!" )
}
##########################################################
## System specific configuration
##########################################################
# Global include path which is always added at the end of the INCLUDEPATH
SYS_INCLUDEPATH = /opt/local/include
# Global lib path and libs which is ls always added at the end of LIBS
SYS_LIBS = -L/opt/local/lib
##########################################################
## zlib (http://www.zlib.net/)
##########################################################
# include path. leave it blank to use SYS_INCLUDE
ZLIB_INCLUDEPATH = $$QTI_ROOT/3rdparty/zlib/
##########################################################
## muParser (http://muparser.sourceforge.net/)
##########################################################
# include path. leave it blank to use SYS_INCLUDE
MUPARSER_INCLUDEPATH = $$QTI_ROOT/3rdparty/muparser/include
# link statically against a copy in 3rdparty/
MUPARSER_LIBS = $$QTI_ROOT/3rdparty/muparser/lib/libmuparser.a
# or dynamically against a system-wide installation
#MUPARSER_LIBS = -lmuparser
##########################################################
## GNU Sientific Library (http://www.gnu.org/software/gsl/)
##########################################################
# include path. leave it blank to use SYS_INCLUDE
GSL_INCLUDEPATH = $$QTI_ROOT/3rdparty/gsl/include
# link statically against a copy in 3rdparty/
GSL_LIBS = $$QTI_ROOT/3rdparty/gsl/lib/libgsl.a \
$$QTI_ROOT/3rdparty/gsl/lib/libgslcblas.a
# or dynamically against a system-wide installation
#GSL_LIBS = -lgsl -lgslcblas
##########################################################
## QWT - use local copy till upstream catches up
# http://qwt.sourceforge.net/index.html
##########################################################
# include path.
QWT_INCLUDEPATH = $$QTI_ROOT/3rdparty/qwt/src
# link locally against a copy in 3rdparty/
QWT_LIBS = $$QTI_ROOT/3rdparty/qwt/lib/libqwt.a
##########################################################
## QwtPlot3D - use local copy till upstream catches up
# http://qwtplot3d.sourceforge.net/
##########################################################
# include path.
QWT3D_INCLUDEPATH = $$QTI_ROOT/3rdparty/qwtplot3d/include
# link locally against a copy in 3rdparty/
win32:QWT3D_LIBS = $$QTI_ROOT/3rdparty/qwtplot3d/lib/qwtplot3d.dll
unix:QWT3D_LIBS = $$QTI_ROOT/3rdparty/qwtplot3d/lib/libqwtplot3d.a
##########################################################
## Boost libraries (http://www.boost.org/) - optional
##########################################################
# include path. leave it blank to use SYS_INCLUDE
#BOOST_INCLUDEPATH = $$QTI_ROOT/3rdparty/boost
BOOST_INCLUDEPATH = C:/MinGW/include/boost
# link statically against a copy in 3rdparty/
unix: BOOST_LIBS = $$QTI_ROOT/3rdparty/boost/lib/libboost_date_time.a \
$$QTI_ROOT/3rdparty/boost/lib/libboost_thread.a
##win32:BOOST_LIBS = $$QTI_ROOT/3rdparty/boost/lib/libboost_date_time-mgw34-mt.lib \
## $$QTI_ROOT/3rdparty/boost/lib/libboost_thread-mgw34-mt.lib
# link statically against a copy in C:/MinGW/
win32:BOOST_LIBS = C:/MinGW/lib/libboost_date_time.a \
C:/MinGW/lib/libboost_thread.a
# or dynamically against a system-wide installation
#BOOST_LIBS = -lboost_date_time-mt -lboost_thread-mt
##########################################################
## liborigin2 - optional. you don't have to set these variables
# http://soft.proindependent.com/liborigin2/
##########################################################
# include path. leave it blank to use SYS_INCLUDE
LIBORIGIN_INCLUDEPATH = $$QTI_ROOT/3rdparty/liborigin2
# link statically against a copy in 3rdparty/
LIBORIGIN_LIBS = $$QTI_ROOT/3rdparty/liborigin2/liborigin2.a
###########################################################
## libxls - optional. you don't have to set these variables
# http://libxls.sourceforge.net/
###########################################################
# include path.
#XLS_INCLUDEPATH = $$QTI_ROOT/3rdparty/libxls/include/
XLS_INCLUDEPATH = $$QTI_ROOT/3rdparty/ExcelFormat/
# link locally against a copy in 3rdparty/
#XLS_LIBS = $$QTI_ROOT/3rdparty/libxls/lib/libxlsreader.a
XLS_LIBS = $$QTI_ROOT/3rdparty/ExcelFormat/lib/libExcelFormat.a
###########################################################
## QuaZIP - optional. you don't have to set these variables
# http://quazip.sourceforge.net/
###########################################################
# include path.
QUAZIP_INCLUDEPATH = $$QTI_ROOT/3rdparty/quazip/quazip/
# link locally against a copy in 3rdparty/
QUAZIP_LIBS = $$QTI_ROOT/3rdparty/quazip/lib/libquazip.a
##########################################################
## libpng - optional. you don't have to set these variables
##########################################################
# include path. leave it blank to use SYS_INCLUDE
##LIBPNG_INCLUDEPATH = $$QTI_ROOT/3rdparty/libpng/
LIBPNG_INCLUDEPATH = C:/MinGW/include
# link statically against a copy in 3rdparty/
##LIBPNG_LIBS = $$QTI_ROOT/3rdparty/libpng/libpng.a
LIBPNG_LIBS = C:/MinGW/lib/libpng.a
# or dynamically against a system-wide installation
#LIBPNG_LIBS = -lpng
##########################################################
## EmfEngine - optional. you don't have to set these variables
# http://soft.proindependent.com/emf/index.html
##########################################################
# include path.
EMF_ENGINE_INCLUDEPATH = $$QTI_ROOT/3rdparty/EmfEngine/src
# link locally against a copy in 3rdparty/
EMF_ENGINE_LIBS = $$QTI_ROOT/3rdparty/EmfEngine/libEmfEngine.a
##########################################################
## QTeXEngine - optional. you don't have to set these variables
# http://soft.proindependent.com/qtexengine/
##########################################################
# include path.
TEX_ENGINE_INCLUDEPATH = $$QTI_ROOT/3rdparty/QTeXEngine/src
# link locally against a copy in 3rdparty/
TEX_ENGINE_LIBS = $$QTI_ROOT/3rdparty/QTeXEngine/libQTeXEngine.a
##########################################################
## ALGLIB (2.6) - optional. you don't have to set these variables
# http://www.alglib.net/
##########################################################
# include path.
ALGLIB_INCLUDEPATH = $$QTI_ROOT/3rdparty/alglib/
# link locally against a copy in 3rdparty/
ALGLIB_LIBS = $$QTI_ROOT/3rdparty/alglib/libalglib.a
##########################################################
## python - only used if python is needed
##########################################################
# the python interpreter to use
# (unix only, windows will use what ever is configured to execute .py files!)
PYTHON = python
##########################################################
## Qt tools - allows to use specific versions
##########################################################
LUPDATE = lupdate
LRELEASE = lrelease
############################################################
## Target specific configuration: configure Qtiplot itself
############################################################
contains( TARGET, qtiplot ) {
# building without muParser doesn't work yet
SCRIPTING_LANGS += muParser
SCRIPTING_LANGS += Python
# a console displaying output of scripts; particularly useful on Windows
# where running QtiPlot from a terminal is inconvenient
DEFINES += SCRIPTING_CONSOLE
#DEFINES += QTIPLOT_DEMO
# Uncomment the following line if you want to perform a custom installation using the *.path variables defined in ./qtiplot.pro.
CONFIG += CustomInstall
# Uncomment the following line if you want to build QtiPlot as a browser plugin (not working on Internet Explorer).
#CONFIG += BrowserPlugin
CONFIG += release
#CONFIG += debug
#win32: CONFIG += console
} - And now, finally, open a command prompt and...
-
cd c:\qtiplot-0.9.8.3
-
qmake qtiplot.pro
-
make
The compilation should proceed without problems now and qtiplot.exe should be ready in c:\qtiplot-0.9.8.3\qtiplot\
But if you try to execute it, you will probably get an error about a missing dll. Continue reading.Creating a distribution package with all required libraries
For qtiplot.exe to run, it needs access to some dll's and other files.
In order to distribute qtiplot with all needed files, create a distribution dir and copy the following files there:
Path relative to distribution dir |
original file in |
---|---|
gpl_license.txt qtiplot_logo.png |
c:\qtiplot-0.9.8.3\ |
qtiplot.exe qti_wordlist.txt qtiplotrc.py qtiUtil.py |
c:\qtiplot-0.9.8.3\qtiplot\ |
qwtplot3d.dll |
c:\qtiplot-0.9.8.3\3rdparty\qwtplot3d\lib\ |
quazip.dll |
(only if you compiled with quazip support) c:\qtiplot-0.9.8.3\3rdparty\quazip\quazip\release\ |
fitPlugins\explin.dll fitPlugins\exp_saturation.dll fitPlugins\fitRational0.dll fitPlugins\fitRational1.dll fitPlugins\planck_wavelength.dll |
C:\qtiplot-0.9.8.3\fitPlugins\ |
Qt3Support4.dll QtAssistantClient4.dll QtCore4.dll QtGui4.dll QtNetwork4.dll QtOpenGL4.dll QtSql4.dll QtSvg4.dll QtXml4.dll |
C:\Qt\4.6.3\bin\ |
imageformats\qgif4.dll imageformats\qico4.dll imageformats\qjpeg4.dll imageformats\qmng4.dll imageformats\qsvg4.dll imageformats\qtiff4.dll |
C:\Qt\4.6.3\plugins\imageformats\ |
mingwm10.dll | c:\MinGW\bin\ |
bsddb (dir with all contents) encodings (dir with all contents) _abcoll.pyc codecs.pyc ConfigParser.pyc functools.pyc gettext.pyc linecache.pyc os.pyc Queue.pyc shlex.pyc SocketServer.pyc stat.pyc sysconfig.pyc threading.pyc types.pyc _weakrefset.pyc abc.pyc codeop.pyc copy.pyc __future__.pyc glob.pyc locale.pyc posixpath.pyc random.pyc shutil.pyc sre_compile.pyc string.pyc tabnanny.pyc tokenize.pyc UserDict.pyc webbrowser.pyc bdb.pyc code.pyc copy_reg.pyc genericpath.pyc heapq.pyc ntpath.pyc py_compile.pyc repr.pyc site.pyc sre_constants.pyc struct.pyc tempfile.pyc token.pyc warnings.pyc bisect.pyc collections.pyc fnmatch.pyc getopt.pyc keyword.pyc optparse.pyc qtiUtil.pyc re.pyc socket.pyc sre_parse.pyc subprocess.pyc textwrap.pyc traceback.pyc weakref.pyc |
(only if you compiled with python support) (note: if for any of these you don't find the *.pyc file, you can simply copy the equivalent *.py file) (The *.pyc files are automatically created from the corresponding *.py when needed) c:\python27\Lib Note1: some of these files are actually not needed, but I prefer to put them anyway just in case. Note2: if you don't care about wasting a few Mb of hard disk, the simplest thing is to copy the whole content of c:\python27\Lib |
python27.dll |
(only if you compiled with python support) c:\WINDOWS\system32 |
sip.pyd |
(only if you compiled with python support) c:\python27\Lib\site-packages |
PyQt4\__init__.py PyQt4\QtGui.pyd PyQt4\QtCore.pyd |
(only if you compiled with python support) c:\pyqt\ ; c:\pyqt\QtCore ; c:\pyqt\QtGui |
PyQt4\uic (copy the whole uic directory) |
(only if you compiled with python support) c:\pyqt\pyuic\uic ; |
README.txt | http://www.cells.es/Members/cpascual/files/ |
translations\ | Download any wanted translation file (.qm extension) from: http://soft.proindependent.com/translations.html and put it in the translations subdirectory of your distribution directory. |
Manual\ |
If you compiled the manual yourself: Copy the contents of c:\qtiplot-0.9.8.3\manual\html into the Manual subdirectory of your distribution dir. If you didn't compile the manual yourself, you can download the html from: http://soft.proindependent.com/manuals.html and put in under the Manual subdirectory of your distribution directory. Alternatively, you can also copy the manual directory from one of the official demo binaries. |
That's it. Qtiplot can be launched form this distribution directory and it can be zipped and copied to a different machine.
The final tree structure of my distribution directory looks like:
qtiplot_0.9.8.3-3-Unofficial/ ├── bsddb │ ├── test │ │ ├── __init__.py │ │ ├── test_all.py │ │ ├── test_associate.py │ │ ├── test_basics.py │ │ ├── test_compare.py │ │ ├── test_compat.py │ │ ├── test_cursor_pget_bug.py │ │ ├── test_dbenv.py │ │ ├── test_dbobj.py │ │ ├── test_db.py │ │ ├── test_dbshelve.py │ │ ├── test_dbtables.py │ │ ├── test_distributed_transactions.py │ │ ├── test_early_close.py │ │ ├── test_fileid.py │ │ ├── test_get_none.py │ │ ├── test_join.py │ │ ├── test_lock.py │ │ ├── test_misc.py │ │ ├── test_pickle.py │ │ ├── test_queue.py │ │ ├── test_recno.py │ │ ├── test_replication.py │ │ ├── test_sequence.py │ │ └── test_thread.py │ ├── dbobj.py │ ├── db.py │ ├── dbrecio.py │ ├── dbshelve.py │ ├── dbtables.py │ ├── dbutils.py │ └── __init__.py ├── doc │ ├── gpl_licence.txt │ └── README.html ├── encodings │ ├── aliases.py │ ├── aliases.pyc │ ├── ascii.py │ ├── base64_codec.py │ ├── big5hkscs.py │ ├── big5.py │ ├── bz2_codec.py │ ├── charmap.py │ ├── cp037.py │ ├── cp1006.py │ ├── cp1026.py │ ├── cp1140.py │ ├── cp1250.py │ ├── cp1251.py │ ├── cp1252.py │ ├── cp1252.pyc │ ├── cp1253.py │ ├── cp1254.py │ ├── cp1255.py │ ├── cp1256.py │ ├── cp1257.py │ ├── cp1258.py │ ├── cp424.py │ ├── cp437.py │ ├── cp437.pyc │ ├── cp500.py │ ├── cp720.py │ ├── cp737.py │ ├── cp775.py │ ├── cp850.py │ ├── cp852.py │ ├── cp855.py │ ├── cp856.py │ ├── cp857.py │ ├── cp858.py │ ├── cp860.py │ ├── cp861.py │ ├── cp862.py │ ├── cp863.py │ ├── cp864.py │ ├── cp865.py │ ├── cp866.py │ ├── cp869.py │ ├── cp874.py │ ├── cp875.py │ ├── cp932.py │ ├── cp949.py │ ├── cp950.py │ ├── euc_jis_2004.py │ ├── euc_jisx0213.py │ ├── euc_jp.py │ ├── euc_kr.py │ ├── gb18030.py │ ├── gb2312.py │ ├── gbk.py │ ├── hex_codec.py │ ├── hp_roman8.py │ ├── hz.py │ ├── idna.py │ ├── __init__.py │ ├── __init__.pyc │ ├── iso2022_jp_1.py │ ├── iso2022_jp_2004.py │ ├── iso2022_jp_2.py │ ├── iso2022_jp_3.py │ ├── iso2022_jp_ext.py │ ├── iso2022_jp.py │ ├── iso2022_kr.py │ ├── iso8859_10.py │ ├── iso8859_11.py │ ├── iso8859_13.py │ ├── iso8859_14.py │ ├── iso8859_15.py │ ├── iso8859_16.py │ ├── iso8859_1.py │ ├── iso8859_2.py │ ├── iso8859_3.py │ ├── iso8859_4.py │ ├── iso8859_5.py │ ├── iso8859_6.py │ ├── iso8859_7.py │ ├── iso8859_8.py │ ├── iso8859_9.py │ ├── johab.py │ ├── koi8_r.py │ ├── koi8_u.py │ ├── latin_1.py │ ├── mac_arabic.py │ ├── mac_centeuro.py │ ├── mac_croatian.py │ ├── mac_cyrillic.py │ ├── mac_farsi.py │ ├── mac_greek.py │ ├── mac_iceland.py │ ├── mac_latin2.py │ ├── mac_romanian.py │ ├── mac_roman.py │ ├── mac_turkish.py │ ├── mbcs.py │ ├── palmos.py │ ├── ptcp154.py │ ├── punycode.py │ ├── quopri_codec.py │ ├── raw_unicode_escape.py │ ├── rot_13.py │ ├── shift_jis_2004.py │ ├── shift_jis.py │ ├── shift_jisx0213.py │ ├── string_escape.py │ ├── tis_620.py │ ├── undefined.py │ ├── unicode_escape.py │ ├── unicode_internal.py │ ├── utf_16_be.py │ ├── utf_16_le.py │ ├── utf_16.py │ ├── utf_32_be.py │ ├── utf_32_le.py │ ├── utf_32.py │ ├── utf_7.py │ ├── utf_8.py │ ├── utf_8_sig.py │ ├── uu_codec.py │ └── zlib_codec.py ├── fitPlugins │ ├── explin.dll │ ├── exp_saturation.dll │ ├── fitRational0.dll │ ├── fitRational1.dll │ └── planck_wavelength.dll ├── imageformats │ ├── qgif4.dll │ ├── qico4.dll │ ├── qjpeg4.dll │ ├── qmng4.dll │ ├── qsvg4.dll │ └── qtiff4.dll ├── manual │ └── html │ ├── common │ ├── equations │ ├── icons │ ├── pics │ ├── tutorial │ ├── qtiplot.adp │ └── qtiplot.css ├── PyQt4 │ ├── uic │ │ ├── Compiler │ │ ├── Loader │ │ ├── port_v2 │ │ ├── port_v3 │ │ ├── widget-plugins │ │ ├── driver.py │ │ ├── exceptions.py │ │ ├── icon_cache.py │ │ ├── __init__.py │ │ ├── objcreator.py │ │ ├── properties.py │ │ ├── pyuic.py │ │ └── uiparser.py │ ├── __init__.py │ ├── __init__.pyc │ ├── QtCore.pyd │ └── QtGui.pyd ├── translations │ └── qt ├── _abcoll.pyc ├── abc.pyc ├── bdb.pyc ├── bisect.pyc ├── codecs.pyc ├── codeop.pyc ├── code.pyc ├── collections.pyc ├── ConfigParser.pyc ├── copy.pyc ├── copy_reg.pyc ├── fnmatch.pyc ├── functools.pyc ├── __future__.pyc ├── genericpath.pyc ├── getopt.pyc ├── gettext.pyc ├── glob.pyc ├── heapq.pyc ├── keyword.pyc ├── linecache.pyc ├── locale.pyc ├── mingwm10.dll ├── ntpath.pyc ├── optparse.pyc ├── origin2.dll ├── os.pyc ├── posixpath.pyc ├── py_compile.pyc ├── python27.dll ├── Qt3Support4.dll ├── QtAssistantClient4.dll ├── QtCore4.dll ├── QtGui4.dll ├── qtiplot.exe ├── qtiplot_logo.png ├── qtiplotrc.py ├── qtiUtil.py ├── qtiUtil.pyc ├── qti_wordlist.txt ├── QtNetwork4.dll ├── QtOpenGL4.dll ├── QtSql4.dll ├── QtSvg4.dll ├── QtXml4.dll ├── quazip.dll ├── Queue.pyc ├── qwtplot3d.dll ├── random.pyc ├── repr.pyc ├── re.pyc ├── shlex.pyc ├── shutil.pyc ├── sip.pyd ├── site.pyc ├── socket.pyc ├── SocketServer.pyc ├── sre_compile.pyc ├── sre_constants.pyc ├── sre_parse.pyc ├── stat.pyc ├── string.pyc ├── struct.pyc ├── subprocess.pyc ├── sysconfig.pyc ├── tabnanny.pyc ├── tempfile.pyc ├── textwrap.pyc ├── threading.pyc ├── tokenize.pyc ├── token.pyc ├── traceback.pyc ├── types.pyc ├── UserDict.pyc ├── warnings.pyc ├── weakref.pyc ├── _weakrefset.pyc └── webbrowser.pyc
Contact information
If you have any comments, questions, or suggestions, feel free to contact me.