为什么setup.py被pip执行了两次?
Why is setup.py executed twice by pip?
考虑一个非常简单的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()
?
答案是 pip install .
执行了 setup.py
两次(详细的输出实际上是这么说的)因为它执行了 egg_info
子命令,然后执行了 install
子命令。
一个可能的解决方案是检查是否 sys.argv[1] == 'install'
然后才执行任何想要的。
考虑一个非常简单的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()
?
答案是 pip install .
执行了 setup.py
两次(详细的输出实际上是这么说的)因为它执行了 egg_info
子命令,然后执行了 install
子命令。
一个可能的解决方案是检查是否 sys.argv[1] == 'install'
然后才执行任何想要的。