自己编译的Python找不到numpy怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己编译的Python找不到numpy怎么办相关的知识,希望对你有一定的参考价值。

参考技术A Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,一般与Scipy、matplotlib一起使用。导入numpy的范例如下:>>>import
numpy
as
np>>>print
np.version.version1.6.2
参考技术B 尝试过以下几种方法:
1.使用numpy
genfromtxt加载,成功读取完了,但数据变形了(2列的数据变一列了...)。看了一下genfromtxt源码,不过也是逐行读取文本并以tuple形式存入一个list中,解决不了根本问题啊。
2.调大python的使用内存。觉得应该是python限制了可用内存,调大点应该有点效果,不过一直不知道有没有这个方法。
3.尝试hadoop。了解一下以后觉得是杀鸡用牛刀了。要处理的数据在几百m到1g这样。

如何使用 boost/python numpy 库进行编译? make 找不到库文件

【中文标题】如何使用 boost/python numpy 库进行编译? make 找不到库文件【英文标题】:How to compile with boost/python numpy library? Make can't find the library files 【发布时间】:2020-07-20 16:26:37 【问题描述】:

我有一个 C++ 扩展,它使用来自 Boost/Python 的 numpy 库。这是 .h 文件:

#pragma once
#include <string>
#include <exception>
#include <utility>
#include <deque>
#include <map>
#include <vector>
#include <random>
#include <time.h>


#include <python3.6m/Python.h>
#include <boost169/boost/python/object/pickle_support.hpp>
#include <boost169/boost/python/dict.hpp>
#include <boost169/boost/python.hpp>
#include <boost169/boost/python/numpy.hpp>

class MyClass : public Node
public:
    // attributes
    // functions

Makefile:

myclass.o:myclass.cpp node.cpp address.cpp foo.cpp info.cpp container.cpp
    g++ -O3 -std=c++11 -fPIC -I/usr/include/python3.6m myclass.cpp node.cpp address.cpp foo.cpp info.cpp container.cpp -c -lpython3.6m -lboost_numpy36 -lboost_python3


MyClass.so:myclass.o node.o address.o foo.o info.o container.o
    g++ -O3 -std=c++11 -L /lib64 -shared myclass.o node.o address.o foo.o info.o container.o -o MyClass.so -lpython3.6m -lboost_numpy36 -lboost_python3

而usr/lib64文件夹包含以下文件:

locate boost_numpy
/usr/lib64/libboost_numpy27.so.1.69.0
/usr/lib64/libboost_numpy36.so.1.69.0
/usr/lib64/boost169/libboost_numpy27.so
/usr/lib64/boost169/libboost_numpy36.so

但是当我尝试编译时,它给了我一个错误:

/usr/bin/ld: cannot find -lboost_numpy36
collect2: error: ld returned 1 exit status
make: *** [MyClass.so] Error 1

它用不同的名字给了我相同的结果:

/usr/bin/ld: cannot find -lboost169/boost_numpy36
collect2: error: ld returned 1 exit status
make: *** [MyClass.so] Error 1

/usr/bin/ld: cannot find -lboost_numpy36.so.1.69.0
collect2: error: ld returned 1 exit status
make: *** [MyClass.so] Error 1

我有什么遗漏吗? boost_python3 和 python3.6m 在 lib64 目录中都有一个 .so 文件,它们编译得很好

谢谢

【问题讨论】:

【参考方案1】:

-L /lib64 后面添加了这个,它起作用了: -L /lib64/boost169

【讨论】:

以上是关于自己编译的Python找不到numpy怎么办的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 中编译 SWIG python 包装器时,MinGW g++ 找不到 numpy\arrayobject.h

如何使用 boost/python numpy 库进行编译? make 找不到库文件

找不到 numpy.i

在R中使用带有网格包的Python - 找不到Numpy

我include自己的头文件,编译器却提示找不到,大家帮忙看看怎么回事好么?

pycharm找不到python版本怎么解决