The*_*ist 2 python distutils setuptools setup.py python-3.x
我正在学习如何使用distutils,有些东西我不明白,我希望有人可以向我解释.
我已经成功创建了可以安装的tar.gz包
pip install mypackage.tar.gz
Run Code Online (Sandbox Code Playgroud)
我这样做setup.py,使用一个运行函数的简单脚本,setuptools.setup()我调用它python3 setup.py sdist.
我现在想学习的内容:如何在此构建扩展.
我的问题:我找不到任何全面的文本来解释如何pip install有一个build_ext类的包可以让它构建,然后安装.
如果我们看一下这个例子,对于着名的工具cx_freeze包,我们看到:
build_ext类build_extension()setup(),变量cmdclass,包含包含类的dictbuild_ext我的问题:cx_freeze构建扩展然后安装它的原因是什么?是否有足够的cmdclass定义build_ext来实现这一目标?
经过多次测试,我了解到这与pip工作方式有关,而不是如何setup.py工作.事实证明,在编写setup.py文件并使用pip安装后,会发生以下情况:
/tmp,在Windows上,它位于用户的临时目录中.setup.py installsetup.py buildsetup.py install_libsetup.py build_pysetup.py build_ext而这一切都取决于你是否在cmdclass参数中定义了东西setup().例如,build_ext仅当您build_ext在cmdclassAND中ext_modules定义并且已在setup()调用的参数中定义时才会运行.因此ext_modules,例如,期望是一个列表Extension(),其中包含有关每个扩展的所有信息.类中的函数build_extension(self,ext)将在该列表的每个元素上执行.
进入cmdclass(我使用build和build_py)的所有这些类都有一个调用的方法run(),您应该覆盖它以放入自定义构建过程.
毕竟做到这一点,PIP 安装(或复制)packages中定义的setup()(基本上在临时目录)到你的Python目录,这是安装结束,并删除临时文件.
所有这些都有更多细节,但我想这对初学者来说是个好消息.我没有看到任何一个全面解释过.因此,我希望这有助于并为人们节省我必须要做的经验测试来学习这一点.
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |