fasiondog / hikyuu_extern_libs

依赖库
0 stars 2 forks source link

update pybind11 #1

Closed yangrq1018 closed 9 months ago

yangrq1018 commented 9 months ago

See https://github.com/xmake-io/xmake-repo/pull/2976.

This builds fine on my Arch Linux x86, they reported problem on Windows x86 and ARM. I don't have a Windows environment on hand, but if they have made it working we can switch to the official version.

yangrq1018 commented 9 months ago
        -- get python include directory.
        local pydir = try { function () return os.iorun("python3-config --includes"):trim() end }
        print(pydir)
        assert(pydir, "python3-config not found!")

输出:-I/usr/include/python3.11 -I/usr/include/python3.11 我在终端里执行

❯ python3-config --includes
-I/home/martin/anaconda3/envs/hikyuu/include/python3.9 -I/home/martin/anaconda3/envs/hikyuu/include/python3.9

conda环境下无法正确识别python,无法识别conda interpretor,也不是env里的interpreter

yangrq1018 commented 9 months ago

在on_load里打印

        print(os.getenv('PATH'))
/usr/bin:/home/martin/anaconda3/envs/hikyuu/bin:/home/martin/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/martin/go/bin

/usr/bin貌似是xmake加上去的,我随手写了一个空的package,里面打印也是增加了这个路径不知道为什么,导致最终识别了arch里安装的官方的python3.11。

可能需要给xmake提一个issue.

fasiondog commented 9 months ago

在on_load里打印

        print(os.getenv('PATH'))
/usr/bin:/home/martin/anaconda3/envs/hikyuu/bin:/home/martin/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/martin/go/bin

/usr/bin貌似是xmake加上去的,我随手写了一个空的package,里面打印也是增加了这个路径不知道为什么,导致最终识别了arch里安装的官方的python3.11。

可能需要给xmake提一个issue.

xmake repo 里的 pybind11 不方便在本机交叉构建,所以我单独处理只用头文件,不用每次去安装 python。后面 hikyuu 那边会加 pyinclude 和 pylib 的选项,直接在参数里指明交叉工具链里python的位置,这样比较方便。尤其有些单板本身已经构建专门版本的python(或者直接把编译后的python放工具链相应位置),这样在用户目录下创建一个 .xmake.lua 自建一个工具链配置很方便。只要类似: xmake f -c -p cross --toolchain=pi -a aarch64 就可以了。所以不打算用公共库里的那个 pybind11。

fasiondog commented 9 months ago
        -- get python include directory.
        local pydir = try { function () return os.iorun("python3-config --includes"):trim() end }
        print(pydir)
        assert(pydir, "python3-config not found!")

输出:-I/usr/include/python3.11 -I/usr/include/python3.11 我在终端里执行

❯ python3-config --includes
-I/home/martin/anaconda3/envs/hikyuu/include/python3.9 -I/home/martin/anaconda3/envs/hikyuu/include/python3.9

conda环境下无法正确识别python,无法识别conda interpretor,也不是env里的interpreter

现在要在 activate 的 conda 环境里才行。我这 hikyuu 都可以正常识别。

yangrq1018 commented 9 months ago

你是win环境吗,奇怪,我这终端执行python3-config是正常的,lua里就会path被加一个/usr/bin,我在xmake源码里搜了以下也没找到是哪里加的。(我是conda activate env之后才build的)

yangrq1018 commented 9 months ago

See https://github.com/xmake-io/xmake/issues/4654

fasiondog commented 9 months ago

你是win环境吗,奇怪,我这终端执行python3-config是正常的,lua里就会path被加一个/usr/bin,我在xmake源码里搜了以下也没找到是哪里加的。(我是conda activate env之后才build的)

你不要用xmake库的pybind

fasiondog commented 9 months ago

我用的是 ubuntu。这个就先不合了,主要是本地 cross 编译的时候,以后需要自行指定 py_include, py_lib 的路径