Setuptools setup.py installs if dependencies fail

I have setup.py that looks a bit (good, for sure):

 #!/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"]) 

It installs the package perfectly when launched with ./setup.py install . However, it does this regardless of whether the "sonLib" package is installed, ignoring the dependency.

Is this the expected behavior? Should setup.py install go blithely if the dependencies are not installed, leaving it to the pip or something else to install them in advance? If not, and setup.py install should fail if there are no dependencies, what am I doing wrong?

EDIT : information about some versions:

 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' >>> 
+4
source share
1 answer

The default install for Distutils setup does not know anything about dependencies. If you use this, you are correct that the dependencies will not be checked.

Just going to what you showed in setup.py , you use Setuptools for the setup function. The Setuptools install command is declared to run easy_install , which in turn checks and loads the dependencies.

Perhaps you explicitly invoke Distutils install by specifying install --single-version-externally-managed .

0
source

Source: https://habr.com/ru/post/1492400/


All Articles