我试图配置我的包,以便在安装过程中执行脚本。因此,我继承了setuptools.命令安装并创建了我的自定义类ActionOnInstall
,以便在安装包时执行操作。这个类是通过setuptoolssetup()
参数{
一个很小的例子设置.py文件看起来像
from setuptools import find_packages, setup
from setuptools.command.install import install
class ActionOnInstall(install):
def run(self):
print("Call install.run(self) works!")
install.run(self)
setup(name='name',
cmdclass={
'install': ActionOnInstall})
通过执行
^{pr2}$运行成功,但不执行ActionOnInstall.run()
中指定的命令。更直接的说法是设置.py通过
python3 setup.py install
执行ActionOnInstall.run()
中指定的命令。在
然后,我发现自己在问:这两种安装软件包的方法的实际区别是什么。我知道,就像其他帖子告诉我们的那样,pip让安装包的生活更轻松。但是这两种方法是如何区别对待cmdclass
参数的setup()
没有解释。因此,我非常感谢你们的来信。在
pip在安装包时运行
python setup.py install
,它不会改变设置.py感觉被执行。在您看不到任何输出的原因是,如@phd所述,pip默认情况下会隐藏运行
setup.py
文件的所有输出,因为运行python setup.py install
时打印的大多数信息对大多数用户都没有用。在通过将“verbose”选项传递给
pip install
,您可以看到这个隐藏的输出以及pip所做的一切:皮普打电话给你设置.py但它会重定向stdout/stderr。测试设置.py在pip write to a file in a fixed location(pip写入固定位置的文件)下:
调查/tmp/调试日志在
pip install .
之后相关问题 更多 >
编程相关推荐