python + distutils:在构建/安装时添加.py文件打包?

时间:2011-12-20 01:52:33

标签: python distutils

对于各种不太好但很不幸的必要原因,我使用setup.py文件来管理一些二进制资产。

py setup.py buildinstall期间,我想在.py安装的“普通”Python包中创建一个setup.py文件,其中包含有关这些二进制资产的一些详细信息(他们的绝对路径,版本信息等)。

创建该文件的最佳方法是什么?

例如,我希望它可以像这样工作:

$ cd my-python-package
$ py setup.py install
...
Installing version 1.23 of my_binary_assets to /some/path...
...
$ python -c "from  my_python_package import binary_asset_version_info as info; print info"
{"path": "/some/path", "version": "1.23"}

(注意:我正在使用cmdclass参数setup(…)来管理二进制资产的构建和安装......我只想知道如何创建binary_asset_version_info.py示例中使用的文件)

1 个答案:

答案 0 :(得分:1)

乍一看,你的需求中有一个catch-22:创建这个.py文件最明显的地方是build或build_py命令(为了获得通常的distutils操作,比如字节编译),但你想要该文件包含已安装资产的路径,因此您必须在安装步骤中创建它。我认为有两种方法可以解决这个问题:

a)在build_py期间创建info.py文件,并使用distutils机制获取资产文件的安装路径

b)在安装过程中创建info.py并调用distutils.util.byte_compile进行字节编译

我发现这两个想法都令人反感,但是好:)现在,你知道如何填写文件(即从distutils获取安装路径)吗?