在前一篇写过《SetupTools工具的使用心得》之后,又发现了新的问题。

最近简单地看了一下 Dabo 项目,感到还是挺有意思的,我特别感兴趣的是它对wxPython的一些封装,菜单的小图标也挺漂亮,但它目前还没有一个安装程序。我希望学习一下这个项目,因此向项目的作者之一ED要了一个密码就可以在Wiki上编辑了。而且我想写一个setup.py脚本作为一个贡献,但是问题就来了。

脚本如下:

import ez_setup # From http://peak.telecommunity.com/DevCenter/setuptools
ez_setup.use_setuptools()

from SetupTools import setup, find_packages

setup(
    name = "Dabo",
    version = "0.1",
    url = 'http://dabodev.com/',
    author = 'limodou',
    author_email = 'limodou@gmail.com',
    description = 'A easy way to create Wizard in wxPython',
    license = 'GPL',
    packages = find_packages(),
    package_data = {
        '':['ANNOUNCE', 'AUTHORS', 'ChangeLog', 'INSTALL', 'LICENSE.TXT', 'README', 'TODO'],
        'dabo.icons': ['*.png'],
        'dabo.lib.reporting':['*.rfxml'],
        'dabo.lib.reporting_stefano':['*.rfxml'],
        'dabo.ui.uiwx.macImageProblem':['*.png'],
        'dabo.ui.uiwx.masked':['README'],
    },
)

我主要是想生成一个源码的发布包,因此希望把所有非.py的文件也包括进去。但是发现,上面的脚本根本做不到。于是我就很奇怪,因为我的EasyWizard也有类似的处理,但是它就是可以,为什么。于是我没办法只好开始读源码,加调试语句,最终得到如下的结论:

  1. package_data对于生成源码包根本不起作用。它的真正作用是对build过程,也就是安装时才生效,它会按照package_data的设置将数据文件安装到 Python 的库目录下去。
  2. 如果只是打源码,而且不考虑数据文件的安装,package_data根本就不用写。
  3. 对于打源码生效的是靠CVS, .svn相关的entries文件中的内容。也就是说只要你的数据文件是在版本管理之下的,setuptools就会将其打进去。但我发现一个问题,当我删除了一个文件,在.svn中的entries中还有这个文件的入口,但删除标志是true。但setuptools并不能发现,仍然会打进去。因此这可能是一个Bug。
  4. 如果你的setup.py所处的目录没有.svn/CVS之类的目录,那么子目录下的数据文件将无法打进去。因为对于数据文件,setuptools是先从开始目录下查找.svn/entries文件,然后得到文件和目录清单,再一层层递归。如果setup.py目录下没有.svn/CVS目录,那么它将无法处理子目录。此问题连同上面的问题我已经报告了,不知道能否解决。


第4个结论经过 distutils-sig Phillip J. Eby 的回答只能是整个项目都处于版本控制之下才可以。 update 2005-08-06

第3个结论中关于删除标记其实是因为在打到svn中时我带上了.pyc文件,然后又删除的。这样可以通过设置svn忽略掉.pyc,.pyo文件,这样提交修改后,.svn/entries中就不会有这些文件了。这回就正确了。 update 2005-08-07

收到Phillip J. Eby 提供的一个patch,这样不用忽略.pyc了。patch如下: 

Index: SetupTools/command/sdist.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setuptools/setuptools/command/sdist.py,v
retrieving revision 1.4
diff -u -r1.4 sdist.py
--- setuptools/command/sdist.py 9 Jul 2005 04:21:22 -0000 1.4
+++ setuptools/command/sdist.py 6 Aug 2005 16:23:18 -0000
@@ -84,7 +84,11 @@
     (convert_path('CVS/Entries'),
         re_finder(re.compile(r"^\w?/([^/]+)/", re.M))),
     (convert_path('.svn/entries'),
-        re_finder(re.compile(r'name="([^"]+)"'), unescape)),
+        re_finder(
+            re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I),
+            unescape
+        )
+    ),
     (convert_path('.svn/dir-props'), externals_finder),
 ]
 
@@ -117,7 +121,3 @@

我想新版本的setuptools.py可能会包括这个补丁。



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=496412

::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


订阅 substack 体验古早写作:


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::