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

1 投票
1 回答
640 浏览
提问于 2025-04-16 10:43

我们的系统团队把源代码放在git里,不支持pip。这个git仓库里有一个压缩的tar文件,而这个tar文件里面有一个setup.py。我想在我的项目中最简单的方式就是在我的pip的requirements.txt文件里加一行-e git...,并在git仓库的根目录下添加一个setup.py,让pip可以使用。最后一步就是怎么写一个setup.py,让它能把tar文件作为源代码包安装。

/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 个回答

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()

这个文件根本没有使用setup API,而是依靠setup.py这个名字在安装时被调用。


不过,我得到可靠的信息,easy_install支持从tar文件安装:'easy_install SOURCES/source.tar.gz'。那么,是否有一个pip的-e ...git指令,可以从git仓库拉取并从一个嵌套的tar文件中安装呢?

撰写回答