自己编译的Python找不到numpy怎么办
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己编译的Python找不到numpy怎么办相关的知识,希望对你有一定的参考价值。
参考技术A Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,一般与Scipy、matplotlib一起使用。导入numpy的范例如下:>>>importnumpy
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 找不到库文件