我正在尝试使用 setuptools 制作一个可分发的鸡蛋,而我的程序取决于 wget 的存在,这显然在 PyPi 中不可用。我有一个小脚本,它检查 wget 的存在,要求用户安装它,如果未安装则返回 -1,如果已安装则返回 0。
只有当我的 wget 检查脚本返回 0 时,我才想完成我的程序的安装。如何使用 setuptools 执行此操作?
我正在尝试使用 setuptools 制作一个可分发的鸡蛋,而我的程序取决于 wget 的存在,这显然在 PyPi 中不可用。我有一个小脚本,它检查 wget 的存在,要求用户安装它,如果未安装则返回 -1,如果已安装则返回 0。
只有当我的 wget 检查脚本返回 0 时,我才想完成我的程序的安装。如何使用 setuptools 执行此操作?
在调用setup()
setup.py 中的方法之前,您可以检查 wget 是否存在,如果不存在,则可以退出并说明您需要 wget 作为软件的依赖项。
if __name__ == '__main__':
# Check for wget
if sys.platform == 'linux2' and not ((os.path.exists('/usr/bin/wget') or os.path.exists('/usr/local/bin/wget')):
sys.exit("You need wget binary for this software to work")
# setup code
setup(name='yoursoftware',
version='42',
data_files = [ # All your setup details
(script_install_location, ['somescript.py']),
)
正如另一位海报所解释的那样,如果您可以在没有 wget 的情况下完成您正在尝试的任何事情并通过 urlretrieve 方法 urllib 获取它,那么它将是跨平台的解决方案。
根据您需要 wget 的目的,您是否考虑过使用 urllib 或 urllib2 模块在 python 中编写自己的 wget 等效项?然后,您将拥有跨平台且受您控制的东西,并且您将打破对 wget 的依赖。查看 urlretrieve 方法。