如何创建使用tar文件的setup.py

时间:2011-01-27 13:56:52

标签: python setup.py

我们的系统人员使用git捆绑源代码并且不支持pip。 git存储库包含一个压缩的tar文件。并且tar文件中有一个setup.py。我认为在我的项目中公开这个的最简单方法是在我的pip requirements.txt中添加一个-e git...行,并在git存储库的根目录中添加一个setup.py供pip使用。最后一步是如何编写一个安装tar文件作为源代码分发的setup.py。

/package
    /SOURCES
        package.tar.gz
    /SPECS
        site-specific-server-installation-script

另外,我可以得到一个执行这些操作的setup.py:

cd package/SOURCES
tar xzfv package-1.0.6.tar.gz
cd package-1.0.6/
python setup.py

1 个答案:

答案 0 :(得分:2)

我选择在git包的根目录中编写一个伪setup.py文件:

import os
import subprocess

if __name__ == '__main__':
    package_name = 'package'
    short_package_name = 'package-1.0.6'

    print "Changing to SOURCES"
    os.chdir('SOURCES')

    tar_file = '.'.join([short_package_name, 'tar', 'gz'])
    print "Untarring ", tar_file
    p = subprocess.Popen(['tar', 'xzfv', tar_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, errors = p.communicate()

    print "Changing to ", short_package_name
    os.chdir(short_package_name)

    print "Setting up source distribution"
    p = subprocess.Popen(['python', 'setup.py', 'install'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, errors = p.communicate()

根本不使用安装API,而是依赖于使用setup.py名称在安装时调用。


然而,我可靠地得知,easy_install支持从tar文件安装:'easy_install SOURCES / source.tar.gz'。那么,是否有一个pip -e ...git指令允许从git中提取git存储库并从嵌套的tar文件安装?