我想知道如何在本地安装setup.py安装c模块。本地不在/usr/local/python..
而在~/local/python...
,但在[where_all_my_code_is]/bin
,我可以从[where_all_my_code_is]文件夹中的脚本导入。
我有一些c代码。 SRC /富/ 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");
}
setup.py
from distutils.core import setup, Extension
setup(name='foo', version='1.0',
ext_modules=[Extension('foo', ['src/foo/foo.c'])])
现在,我不想将它安装到我的any / local / python文件夹或其他任何文件夹中,而是希望代码位于模块旁边的bin文件夹中。
e.g。
~/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
完成这件事的最合适/最好的方法是什么?
答案 0 :(得分:0)
这是一个选项:
使用
进行设置$ python3 setup.py install --root . --install-lib lib
将本地lib
路径添加到python路径
$ export PYTHONPATH:$PYTHONPATH:./lib
现在.
中的python脚本可以导入我们刚编译的c
模块。
对于我在问题中建议的确切场景,需要使用更高级的东西,但一般程序应该适用。
限制?可能的陷阱? brittlenesses?