你好,我尝试构建一个使用 numpy 的简单 mojo 应用程序。我将二进制文件复制到另一个操作系统,它无法直接运行。我必须安装 python 和相关的软件包,如 numpy。
from python import Python
def main():
# This is equivalent to Python's `import numpy as np`
let np = Python.import_module("numpy")
# Now use numpy as if writing in Python
array = np.array([1, 2, 3])
print(array)
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ ldd /mnt/d/hello_numpy
linux-vdso.so.1 (0x00007ffe3f9ef000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f2573171000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2572f1b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2572e3c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2572e18000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2572c36000)
/lib64/ld-linux-x86-64.so.2 (0x00007f25731e9000)
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ /mnt/d/hello_numpy
Mojo/Python interoperability error: Unable to locate a suitable libpython, please set `MOJO_PYTHON_LIBRARY`
Segmentation fault
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ sudo apt install python3 python-is-python3 python3-dev python3-pip
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ find-python-for-mojo() {
libpath=$(python3 -c 'import sysconfig; print(sysconfig.get_config_var("LIBDIR"))')
pythonlib=$(ls $libpath | grep "libpython3.*[0-9]\.so$")
export MOJO_PYTHON_LIBRARY=${libpath}/${pythonlib}
}
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ find-python-for-mojo
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ echo $MOJO_PYTHON_LIBRARY
/usr/lib/x86_64-linux-gnu/libpython3.11.so
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ /mnt/d/hello_numpy
Unhandled exception caught during execution: An error occurred in Python.
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ pip install numpy
┌──(liudonghua㉿DESKTOP-DELL)-[/mnt/c/Users/Liu.D.H]
└─$ /mnt/d/hello_numpy
[1 2 3]
我希望生成的二进制文件可以直接运行,不需要安装 python3-dev 和依赖项,所有需要的库都包含在二进制文件中。