pypokereval packaging for fpdb project -------------------------------------- Created by Gimick on 11th December 2010 Content is available under the the GNU Affero General Public License version 3 Background ---------- The walktrough builds an unoffical python installer package for pypokereval. In a previous walkthrough, the pypokereval dll(pyd) was built from source. In this walkthrough, we are going to generate a windows package which will allow the sources to be installed through distutils onto a client computer The current situation is that there is no windows build or windows installer provided by the package authors. Until a package is available, the fpdb project needs some method of providing a windows installation for the pypokereval module. This walkthrough will therefore be obsolete once an official package becomes available. Actually, for windows fpdb users, the majority will use a pre-built fpdb executable (which contains the pypokereval package) Therefore, pypokereval installation will only be needed for two groups of people: i) anyone wanting to build an fpdb package using py2exe ii) anyone wanting to run fpdb on windows from source Credits ------- To loic@dachary.org at pokersource http://pokersource.sourceforge.net/ To donn.ingle@gmail.com for the tutorial here ... http://wiki.python.org/moin/Distutils/Tutorial Official python reference here ... http://docs.python.org/distutils/index.html Assumptions ----------- The underlying dll(pyd) and pokereval library is built for win32 x86 platform only, so we will assume 32bit only in this walkthrough. Contributions for a x86-64 build are most welcome. Similarly, the underlying package is built against the python 2-6 library and is valid only for that version. The underlying package was not built with sse enabled, and therefore should work for legacy systems. 1. Install pre-requisites ------------------------- System used for building is winXP home 1.1/ Install python runtime from here ... Python 2.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi 1.2/ Grab pypokereval stuff from fpdb project here ... pypokereval ... http://sourceforge.net/projects/fpdb/files/fpdb/pypoker-eval-win32/dev/pypokereval-138-win32-py265-fpdb-1.1.exe/download 1.3/ Double click the pypokereval-138-win32-py265-fpdb-1.1.exe and extract the folder to the desktop 2. Prepare a folder containing the items needing packaging ---------------------------------------------------------- dos>cd desktop dos>mkdir temp dos>cd temp dos>mkdir pokereval dos>cd pokereval dos>copy ..\..\pypokereval-138-win32-py265-fpdb-1.1\_pokereval_2_6.pyd dos>copy ..\..\pypokereval-138-win32-py265-fpdb-1.1\pokereval.py dos>mkdir utils dos>cd utils dos>copy ..\..\..\pypokereval-138-win32-py265-fpdb-1.1\test.py dos>cd .. The next step is to rename the pokereval.py file to __init__.py. The reason for doing this is that site-packages require an __init__ file to be found when the module is imported at runtime Inserting a dummy __init__.py which simply imports pokereval does not work, the reason being that the PokerEval class is not seen by the caller. Syntax such as "from pokereval import PokerEval" does not work unless the pokereval.py (which defines the PokerEval class) is renamed to __init__.py. dos> rename pokereval.py __init__.py 3. Prepare the additional packaging files ----------------------------------------- dos>cd desktop dos>cd temp 3.1/ setup.py ------------- dos> edit setup.py Include the following python code: #================================================== from distutils.core import setup filelist = ["utils/*", "_pokereval_2_6.pyd"] setup(name = "pokereval", version = "138", description = "pypokereval installer (unofficial)", author = "project fpdb", author_email = "Fpdb-main@lists.sourceforge.net", url = "fpdb.sourceforge.net", packages = ['pokereval'], package_data = {'pokereval' : filelist }, long_description = """An unofficial and experimental installer for pypokereval v138 Built for 32bit windows and python v2.6.5 pokereval official project page is at http://www.pokersource.info/""" ) #================================================== 3.2 / review directory tree --------------------------- The following structure should now exist. temp |--setup.py |--pokereval |--_pokereval_2_6.pyd |--__init__.py |--utils |--test.py 3.3 Build --------- Navigate to the desktop/temp directory dos>c:\Python26\python.exe setup.py bdist_wininst --plat-name=win32 --user-access-control force Note: UAC auto seems to cause lockup on my win7 system 3.4 Complete ------------ The executable file pokereval-138.win32.exe will be in the newly-created dist folder. 3.5 Install and test -------------------- Double click to install Navigate to c:\python26\lib\site-packages\pokereval\test execute dos>c:\Python26\python.exe test.py Output should scroll down the screen