将Python扩展安装到指定位置

7 投票
2 回答
3108 浏览
提问于 2025-04-16 19:38

我的项目结合了纯Python代码和Cython扩展,以便进行优化和与C库的连接。我有一个Python项目的源代码树,还有一个专门用于Cython和C代码的源代码树。我的每个Cython扩展都有一个setup.py文件来构建它们。实际上,对于每个扩展,我会做以下操作:

python setup.py build_ext --inplace
mv myext.so ../some/specific/place/

有没有办法告诉distutils我希望把扩展安装到哪里(如果可能的话,使用相对路径),而不是使用--inplace然后再用mv命令?使用--prefix选项不好,因为它会创建我不需要的文件夹层级。

2 个回答

0

也许你可以使用distutils的替代安装功能,这样可以帮助你删除那些没用的层级文件夹。

试试下面这样的做法:

python setup.py install --home=../some/specific/place \
                        --install-purelib=. \
                        --install-platlib=.
9

我终于找到答案了!这个选项是 -b(或者 --build_lib)

python setup.py build_ext -b ../some/specific/place/

撰写回答