繁体   English   中英

强制`setup.py`使用setuptools

[英]Force `setup.py` to use setuptools

我正在使用此代码:

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使用distutils而不是setuptools时会出现问题:distutils无法识别--single-version-external-managed。

如何强制setup.py使用setuptools?

你所写的基本上就是pip所做的。 根据您编写的代码,您将使用setuptools的setup功能,因为您已从setuptools导入。 Setuptools在其__init__.py为Distutils的setup功能铺平了道路。 因此,如果setup.py脚本导入distutils,它就不会生成。 Setuptools将永远赢得......

如果由于某种原因,在运行命令时仍然存在问题。 尝试在执行前编译文件。 exec(compile(...))而不是execfile(...)

为了回应@jknair的答案...我也不鼓励使用ez_setup.py,因为它的代码重复,具有意外的行为,并且在程序包分发期间经常被排除(这使得像pip这样的工具很难运行设置。 py没有ImportError)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM