我正在使用此代码:
code = 'import setuptools;__file__={0!r};execfile(__file__)'.format(os.path.join(path, 'setup.py'))
args = ['install', '--single-version-externally-managed']
subprocess.check_call([sys.executable, '-c', code, args])
执行setup.py
并安装软件包。当setup.py
使用distutil而不是setuptools时会出现问题:distutils无法识别--single-version-external-managed。
如何强制setup.py
使用setuptools?
答案 0 :(得分:2)
你所写的基本上就是pip所做的。根据您编写的代码,您将使用setuptools'setup
函数,因为您已从setuptools导入。 Setuptools paves over Distutils' setup
function in its __init__.py
.因此,如果setup.py脚本导入distutils,则不会生成。 Setuptools将永远赢得...
如果由于某种原因在运行命令时仍然存在问题。尝试在执行前编译文件。 exec(compile(...))
而不是execfile(...)
回应@jknair回答...我也不鼓励使用ez_setup.py,因为它的代码重复,具有意外行为,并且在程序包分发期间经常被排除(这使得像pip这样的工具很难运行没有ImportError的setup.py。