- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我写了一个 Python 模块,包括一个用 C 编写的子模块:模块本身称为 foo
,C 部分是 foo._bar
。结构如下:
src/
foo/__init__.py <- contains the public stuff
foo/_bar/bar.c <- the C extension
doc/ <- Sphinx configuration
conf.py
...
foo/__init__.py
导入 _bar
来扩充它,有用的东西暴露在 foo
模块中。这在构建时工作正常,但显然不能以未编译的形式工作,因为 _bar
在构建之前不存在。
我想使用 Sphinx 来记录项目,并使用 autodoc foo
模块上的扩展。这意味着我需要先构建项目,然后才能构建文档。
由于我使用 distutils 构建,构建的模块最终位于一些可变命名的目录 build/lib.linux-ARCH-PYVERSION
— 这意味着我不能将目录硬编码到Sphinx' conf.py
.
那么如何配置我的 distutils setup.py
脚本以在构建的模块上运行 Sphinx 构建器?
为了完整起见,这里是对 setup
的调用(“假”东西是 build
和 build_ext
的子类的自定义构建器):
setup(cmdclass = {
'fake': fake,
'build_ext_fake' : build_ext_fake
},
package_dir = {'': 'src'},
packages = ['foo'],
name = 'foo',
version = '0.1',
description = desc,
ext_modules = [module_real])
最佳答案
既然 distutils 有办法确定变量构建路径,为什么不直接使用它呢?
import distutils.command.build
from distutils.dist import Distribution
b = distutils.command.build.build(Distribution())
b.initialize_options()
b.finalize_options()
print b.build_temp
# If you're building a library, you might need:
print b.build_lib
# Other values of interest are:
b.build_purelib
b.build_platlib
b.build_scripts
b.build_base
即使认为 distutils 文档很少,here you'll find one-liners关于那里有哪些类型的构建。
关于python - 将 Sphinx 与 distutils 构建的 C 扩展一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4687608/
这似乎是一个常见问题,但没有一个答案似乎有帮助。在 Windows 10 中安装 statsmodels 时弹出错误(已安装 python 3.6.2): python setup.py instal
Python 在可用于打包和描述项目的工具方面有着令人困惑的历史:这些工具包括标准库中的 distutils、distribute、distutils2 和 setuptools(可能还有更多)。 d
D:\anzhuang\anconda\lib\distutils\__init__.py:14: UserWarning: The virtualenv distutils package at %
I was trying to have a virtualenv set up where it is at python 3.8 while my system is at a more r
我正在尝试通过安装 nose 并输入 来测试我的 scipy 安装 import scipy scipy.test('1','10') 我遇到了大约 200 个错误,但最常见的错误之一是: ....
我使用sudo apt-get install python3-pip安装了pip3之后,当我运行以下命令来安装Django sudo pip3 install django时,出现此错误: Trac
为什么这会创建 2 个 tar.gz 文件,‘python setup.py sdist ?我正在尝试使用上传twine upload -r pypitest dist/*.tar.gz我得到错误说
在某些情况下,由于pypi服务器已经上传了保存版本,因此我想使python setup.py upload失败时自动执行上传过程中的错误。 如何强制其从脚本上传(我知道我可以使用网络界面删除旧版本)。
我正在linux中编译一些cython扩展,并注意到从distutils机制进行构建时,它默认使用-O2。我想知道是否有一种简单的方法可以将其更改为-O3。 我尝试在Extension对象上使用ext
我继承了 Fortran 77 代码,该代码实现了多个子例程,这些子例程通过程序 block 运行,每次运行程序时都需要通过交互式命令提示符进行大量用户输入。由于我想自动运行代码,因此我将所有子例程移
我有一个简单的纯 python 项目,我想将其与 distutils 一起使用。我已成功为 python 模块和一些许可证文本文件创建压缩 tar 文件。这些是 setup.py 的相关部分setup
我一直在开发一个包含大量文件的 Python 扩展模块。在一台机器上构建时,python setup.py build 会很高兴地检测更改的文件,仅构建这些文件,并将整个文件链接在一起,就像 make
所以可以使用distutils创建文件,比如 PIL-1.1.6.win32-py2.5.exe 您可以运行并使用它来轻松安装某些东西。但是,安装需要用户输入才能继续(您必须单击“确定”三次)。我想创
我已经用 C 编写了一个 Python 扩展库,目前我正在使用 distutils 来构建它。我还有一个生成 .h 文件的 Python 脚本,我想将其包含在我的扩展中。 是否可以使用 distuti
我找到了Question#1321270用于安装后。我目前的主要目标是 bdist_wininst,但我没有找到任何与卸载相关的内容... 澄清一下: 我想在安装后注册一个com服务器并在卸载前取消注
是否可以让 distutils 只运行 python 模块依赖性分析(并可能安装丢失的模块)而不实际安装有问题的 python 模块?我想象一个命令如下: ./setup.py check-depen
我已阅读文档,但我不明白。 为什么我必须使用 distutils 来安装 python 模块? 为什么我不能将模块保存在 python 路径中? 最佳答案 您不必使用 distutils。您可以手动安
我写了一个 boost-python 扩展,目前正在通过 distutils 构建。 不幸的是,我无法在 distutils 中找到一种方法来构建没有调试符号的扩展,或者在安装时从扩展中删除符号。 注
也许是个愚蠢的问题,但我想知道 Python 的 distutils 从哪里获得编译器选项?它得到了一些链接目录错误,我想一劳永逸地纠正它。 我知道应该有一个 prefix/lib/pythonver
例如,我可以使用 python setup.py build --compiler=msvc 或 python setup.py build --compiler=mingw32 或只是 python
我是一名优秀的程序员,十分优秀!