Код внутри setup.py вызывается только во время сборки? или также во время установки?
Это зависит ...
Если вы используете setuptools для установки проекта (setup.py install
или easy_install
), то вашsetup.py
наиболее вероятно выполняется в время установки . Если вы используете pip для его установки, то ваш setup.py
, скорее всего, не будет запущен в время установки .
Вы должны ограничить пользовательские шаги до построить операции, которые вы имеете под контролем. Как только вы публикуете дистрибутивы вашего проекта, вы почти не контролируете, что именно происходит.
Я хочу запускать некоторый пользовательский код в файле setup.py только во время сборки, а не во время установки. Возможно ли это?
Да. Вам необходимо настроить соответствующую команду.
Вот пример, показывающий, как создать новую пользовательскую команду build_something
, которая также добавляется как подкоманда команды по умолчанию build
:
#!/usr/bin/env python3
import distutils.command.build
import setuptools
class build_something(setuptools.Command):
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
print(" *** build_something ***")
class build(distutils.command.build.build):
_sub_command = (
'build_something',
None,
)
_sub_commands = distutils.command.build.build.sub_commands
sub_commands = [_sub_command] + _sub_commands
setuptools.setup(
name='Thing',
version='0.0.0',
cmdclass={
'build_something': build_something,
'build': build,
},
)