gpt4 book ai didi

python - 将 python C 包安装到 bin 文件夹中

转载 作者:行者123 更新时间:2023-11-30 18:11:21 27 4
gpt4 key购买 nike

我想知道如何让setup.py在本地安装c模块。本地,例如不在 /usr/local/python.. 中,也不在 ~/local/python... 中,而是在 [where_all_my_code_is]/bin 我可以从 [where_all_my_code_is] 文件夹中的脚本导入它。

我有一些c代码。 src/foo/foo.c

#include <Python.h>
static PyObject * foo(PyObject* o) {
PyObject* five = PyInt_FromLong(5);
return PyNumber_Add(&o, &five);
}
static PyMethodDef funcs[] = {
{"foo", (PyCFunction)foo, METH_VARARGS, "foo, foo and more foo"},
{NULL, NULL, 0, NULL}
};
PyMODINIT_FUNC initaddList(void){
Py_InitModule3("foo", funcs, "do the foo");
}

设置.py

from distutils.core import setup, Extension

setup(name='foo', version='1.0',
ext_modules=[Extension('foo', ['src/foo/foo.c'])])

现在,我希望代码位于模块旁边的 bin 文件夹中,而不是将其安装到我的/local/python 文件夹或其他文件夹中。

例如

~/My_python_project
./src
./foo
./foo.c
./some_code_that_imports_foo.py
./bin
./foo
./my_importable_foo.so

some_code_that_imports_foo.py:

import foo
print(foo.foo(10))
# prints 15

完成这件事的适当/最好的方法是什么?

最佳答案

这里有一个选项:

使用设置

$ python3 setup.py install --root . --install-lib lib

将本地lib路径添加到python路径

$ export PYTHONPATH:$PYTHONPATH:./lib

现在.中的python脚本可以导入我们刚刚编译的c模块。对于我在问题中建议的确切场景,需要使用一些更奇特的东西,但应该适用一般程序。

限制?可能的陷阱?脆性?

关于python - 将 python C 包安装到 bin 文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48117638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com