📄 index.lxp@lxpwrap=x8418_252ehtm.htm
字号:
>setup.py</TT>.</P></DIV><DIVCLASS="SECT2"><H2CLASS="SECT2">MANIFEST.in</A></H2><P>Despite the <TTCLASS="VARNAME">data_files</TT> option to <TTCLASS="FUNCTION">setup()</TT>, it is still necessary to provide a second file that contains a list of extra, non-Python files that need to be distributed. This file is called <TTCLASS="FILENAME">MANIFEST.in</TT> (mind the capitalization), and employs its own set of keywords to specify files to include or exclude.</P><DIVCLASS="EXAMPLE"></A><P><B>Example 26-3. MANIFEST.in</B></P><PRECLASS="SCREEN">include kalaminclude kalam.batrecursive-include data *recursive-include pixmaps *recursive-include dialogs * </PRE></DIV><P>Here, we include the <TTCLASS="FILENAME">kalam</TT> starter script and the <TTCLASS="FILENAME">kalam.bat</TT> and batch file. Then we recursively include everything in the directories <TTCLASS="FILENAME">data</TT>, <TTCLASS="FILENAME">pixmaps</TT> and <TTCLASS="FILENAME">dialogs</TT>. (The latter is not absolutely necessary for running the application, but it can't hurt to give people access to our dialog designs.)</P><P>The options available for <TTCLASS="FILENAME">MANIFEST.in</TT> are:</P><P></P><UL><LI><P>include pat1 pat2 ...</P></LI><LI><P>exclude pat1 pat2 ...</P></LI><LI><P>recursive-include dir pat1 pat2 ...</P></LI><LI><P>recursive-exclude dir pat1 pat2 ...</P></LI><LI><P>global-include pat1 pat2 ...</P></LI><LI><P>global-exclude pat1 pat2 ...</P></LI><LI><P>prune dir</P></LI><LI><P>graft dir</P></LI></UL></DIV><DIVCLASS="SECT2"><H2CLASS="SECT2">setup.cfg</A></H2><P>The <TTCLASS="FILENAME">setup.py</TT> script takes myriad command-line options. You can also create a <TTCLASS="FILENAME">setup.cfg</TT> file that contains the most important options. Amongst those options are a number that tell the installer to install the application in a specific place. The user might need to edit these to reflect his preferences. For Unix, a good default is: </P><PRECLASS="PROGRAMLISTING">[install]install_lib=/usr/local/share/kalaminstall_data=/usr/local/share/kalaminstall_scripts=/usr/local/bin </PRE><P>All Python files (everything that is mentioned in the <TTCLASS="VARNAME">py_modules</TT> or <TTCLASS="VARNAME">packages</TT> argument in <TTCLASS="FILENAME">setup.py</TT>) will be installed in the install_lib directory. Everything that is mentioned in the <TTCLASS="VARNAME">data_files</TT> argument will be installed in the install_data directory. Likewise, everything that is included in the <TTCLASS="VARNAME">scripts</TT> argument will be installed in install_scripts.</P></DIV><DIVCLASS="SECT2"><H2CLASS="SECT2">Creating the source distribution</A></H2><P>We are now ready to create the source distribution. This is a simple, one-line command:</P><PRECLASS="SCREEN">boud@calcifer:~/src/kalam > python setup.py sdist </PRE><P>The distutils will then spew a lot of text on the screen, and deliver your package in a subdirectory named <TTCLASS="FILENAME">dist</TT>:</P><PRECLASS="SCREEN">boudewijn@maldar:~/doc/pyqt/ch18/kalam > python setup.py sdistrunning sdistreading manifest template 'MANIFEST.in'writing manifest file 'MANIFEST'creating kalam-1.0creating kalam-1.0/charmapcreating kalam-1.0/datacreating kalam-1.0/dialogscreating kalam-1.0/kalamlibcreating kalam-1.0/pixmapscreating kalam-1.0/typometercreating kalam-1.0/workspacemaking hard links in kalam-1.0...hard linking README -> kalam-1.0hard linking edmund.py -> kalam-1.0hard linking kalam -> kalam-1.0hard linking kalam.bat -> kalam-1.0hard linking setup.cfg -> kalam-1.0hard linking setup.py -> kalam-1.0hard linking sitecustomize.py -> kalam-1.0hard linking startup.py -> kalam-1.0hard linking charmap/__init__.py -> kalam-1.0/charmaphard linking charmap/charmap.py -> kalam-1.0/charmaphard linking data/Blocks.txt -> kalam-1.0/datahard linking dialogs/frmfindreplace.ui -> kalam-1.0/dialogshard linking dialogs/frmsettings.ui -> kalam-1.0/dialogshard linking kalamlib/__init__.py -> kalam-1.0/kalamlibhard linking kalamlib/configtest.py -> kalam-1.0/kalamlibhard linking kalamlib/dlgfindreplace.py -> kalam-1.0/kalamlibhard linking kalamlib/dlgsettings.py -> kalam-1.0/kalamlibhard linking kalamlib/docmanager.py -> kalam-1.0/kalamlibhard linking kalamlib/docmanagertest.py -> kalam-1.0/kalamlibhard linking kalamlib/frmfindreplace.py -> kalam-1.0/kalamlibhard linking kalamlib/frmsettings.py -> kalam-1.0/kalamlibhard linking kalamlib/kalamapp.py -> kalam-1.0/kalamlibhard linking kalamlib/kalamconfig.py -> kalam-1.0/kalamlibhard linking kalamlib/kalamdoc.py -> kalam-1.0/kalamlibhard linking kalamlib/kalamview.py -> kalam-1.0/kalamlibhard linking kalamlib/macromanager.py -> kalam-1.0/kalamlibhard linking kalamlib/macromanagertest.py -> kalam-1.0/kalamlibhard linking kalamlib/main.py -> kalam-1.0/kalamlibhard linking kalamlib/resources.py -> kalam-1.0/kalamlibhard linking pixmaps/fileprint.xpm -> kalam-1.0/pixmapshard linking pixmaps/find.png -> kalam-1.0/pixmapshard linking pixmaps/listspace.png -> kalam-1.0/pixmapshard linking pixmaps/listspace.xpm -> kalam-1.0/pixmapshard linking pixmaps/splitspace.png -> kalam-1.0/pixmapshard linking pixmaps/splitspace.xpm -> kalam-1.0/pixmapshard linking pixmaps/stackspace.png -> kalam-1.0/pixmapshard linking pixmaps/stackspace.xpm -> kalam-1.0/pixmapshard linking pixmaps/tabmanager.png -> kalam-1.0/pixmapshard linking pixmaps/tabmanager.xpm -> kalam-1.0/pixmapshard linking pixmaps/workspace.png -> kalam-1.0/pixmapshard linking pixmaps/workspace.xpm -> kalam-1.0/pixmapshard linking typometer/__init__.py -> kalam-1.0/typometerhard linking typometer/typometer.py -> kalam-1.0/typometerhard linking workspace/__init__.py -> kalam-1.0/workspacehard linking workspace/listspace.py -> kalam-1.0/workspacehard linking workspace/splitspace.py -> kalam-1.0/workspacehard linking workspace/stackspace.py -> kalam-1.0/workspacehard linking workspace/tabmanager.py -> kalam-1.0/workspacehard linking workspace/workspace.py -> kalam-1.0/workspacecreating disttar -cf dist/kalam-1.0.tar kalam-1.0gzip -f9 dist/kalam-1.0.tarremoving 'kalam-1.0' (and everything under it)boudewijn@maldar:~/doc/pyqt/ch18/kalam > </PRE><P>That's it—a nice, clean and complete source distribution of <SPANCLASS="APPLICATION">Kalam</SPAN>. You can generate both zip archives and gzipped tarballs by providing options on the command line:</P><PRECLASS="SCREEN">boudewijn@maldar:~/doc/pyqt/ch18/kalam > python setup.py sdist --formats=gztar,zip </PRE><P>The options are zip, gztar, bztar, ztar and tar, for zipfiles, gzipped tarfiles, bzipped tarfiles, compressed tarfiles and plain tar files.</P></DIV><DIVCLASS="SECT2"><H2CLASS="SECT2">Installing a source archive</A></H2><P>Installing a source archive is a simple matter of unpacking the archive and executing the following command:</P><PRECLASS="SCREEN"> boudewijn@maldar:~/doc/pyqt/ch18/kalam/dist/kalam-1.0 > python setup.py install </PRE><P>Distutils will copy everything to the location designated in <TTCLASS="FILENAME">setup.cfg</TT>, and <SPANCLASS="APPLICATION">kalam</SPAN> will be ready to run!.</P></DIV></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><A accesskey="P" href="index.lxp@lxpwrap=x8401_252ehtm.htm">Prev</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><A accesskey="H" href="index.lxp@lxpwrap=book1_252ehtm">Home</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><A accesskey="N" href="index.lxp@lxpwrap=x8580_252ehtm.htm">Next</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">Packaging source</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><A accesskey="U" href="index.lxp@lxpwrap=c8349_252ehtm.htm">Up</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">Creating Unix RPM packages</TD></TR></TABLE></DIV></BODY></HTML> </td> </tr> </table> </td> </tr> </table>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -