如何创建一个使用tar文件的setup.py
我们的系统团队把源代码放在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文件中安装呢?