我有setup.py
看起来有点(好吧,确切地说)这样:
#!/usr/bin/env python
from setuptools import setup
import subprocess
import distutils.command.build_py
class BuildWithMake(distutils.command.build_py.build_py):
"""
Build using make.
Then do the default build logic.
"""
def run(self):
# Call make.
subprocess.check_call(["make"])
# Keep installing the Python stuff
distutils.command.build_py.build_py.run(self)
setup(name="jobTree",
version="1.0",
description="Pipeline management software for clusters.",
author="Benedict Paten",
author_email="benedict@soe.ucsc.edu",
url="http://hgwdev.cse.ucsc.edu/~benedict/code/jobTree.html",
packages=["jobTree", "jobTree.src", "jobTree.test", "jobTree.batchSystems",
"jobTree.scriptTree"],
package_dir= {"": ".."},
install_requires=["sonLib"],
# Hook the build command to also build with make
cmdclass={"build_py": BuildWithMake},
# Install all the executable scripts somewhere on the PATH
scripts=["bin/jobTreeKill", "bin/jobTreeStatus",
"bin/scriptTreeTest_Sort.py", "bin/jobTreeRun",
"bin/jobTreeTest_Dependencies.py", "bin/scriptTreeTest_Wrapper.py",
"bin/jobTreeStats", "bin/multijob", "bin/scriptTreeTest_Wrapper2.py"])
使用./setup.py install
运行时,它可以完美地安装软件包。但是,无论是否安装了“sonLib”软件包,都会执行此操作,忽略依赖项。
这是预期的行为吗?如果没有安装依赖项,setup.py install
是否应该轻松进行,将其留给pip或预先安装它们的任何东西?如果没有,并且setup.py install
在缺少依赖时应该失败,我做错了什么?
编辑:某些版本信息:
Python 2.7.2 (default, Jan 19 2012, 21:40:50)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import setuptools
>>> setuptools.__version__
'0.6c12'
>>>
答案 0 :(得分:0)
default install
command for Distutils setup
对依赖关系一无所知。如果您正在运行它,那么您将不会检查依赖项。
只是按照setup.py
中显示的内容,您正在使用setup
功能的Setuptools。 Setuptools install
command被声明为运行easy_install
,后者会检查并下载依赖项。
您可以通过指定install
明确调用Distutils install --single-version-externally-managed
。