我尝试配置我的包,以便在安装过程中执行脚本。因此,我从setuptools.command继承并创建了我的自定义类ActionOnInstall
,以便在安装包时执行操作。如here所述,此类通过setuptools setup()
参数cmdclass
调用。
此类setup.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})
通过执行
构建包pip3 install <path-to-dir-with-setup.py>
成功运行但不执行ActionOnInstall.run()
中指定的命令。更直接通过
python3 setup.py install
执行ActionOnInstall.run()
中指定的命令。
然后,我发现自己在问:这两种方法安装包的实际区别是什么。我知道,就像其他帖子告诉我们的那样,pip使包安装的生活变得更轻松。但是,这两种方法如何区别对待cmdclass
setup()
define(['require'], function(require) {
return {
load: function load(id, parentRequire, loaderCallback) {
require([< patch files >], loaderCallback);
}
};
});
的论点并没有得到解释。因此,我非常感谢你们的来信。
答案 0 :(得分:8)
pip调用你的setup.py,但它会重定向stdout / stderr。要在pip下测试setup.py,请写入固定位置的文件:
.post(URL, formData)
.subscribe((success) => alert('success'), (error) => alert(error));
在class ActionOnInstall(install):
def run(self):
print("Call install.run(self) works!", file=open('/tmp/debug.log', 'w'))
install.run(self)
答案 1 :(得分:3)
pip在安装软件包时运行python setup.py install
- 它不会改变你的setup.py感觉执行方式。
您没有看到任何输出的原因如@phd所述,默认情况下,pip隐藏了运行setup.py
文件的所有输出,因为运行{{1}时打印的大部分信息都是对大多数用户没用。
你可以通过传递&#34; - verbose&#34;来看到这个隐藏的输出,以及pip所做的一切。 python setup.py install
的选项:
pip install