为什么setup.py会被pip执行两次?

时间:2019-05-02 16:38:28

标签: python pip setuptools

考虑一个非常简单的setup.py

from setuptools import setup, find_packages

print('WAAAAAAAAA') # executed twice!

setup(
    name="foo",
    version="190425",
    description="bar",
    author="Developers",
    author_email="me@domain.com",
    install_requires=["pyzmq", "pybullet"],
    packages=find_packages(),
)

为什么在运行pip install . -v时模块会被加载两次,我该怎么做以保护代码,以便每次调用pip时都只能运行一次,就像setup()一样?

1 个答案:

答案 0 :(得分:1)

答案是pip install .执行了两次setup.py(详细输出实际上是这样说的),因为它先执行了egg_info子命令,然后又执行了install子命令。

一种可能的解决方案是检查sys.argv[1] == 'install'是否仅执行然后执行所需的任何操作。