如何使用特定版本的python编译python库?

时间:2012-06-27 19:41:29

标签: gcc python-3.x

我正在尝试使用 python 3.2 绑定构建cwiid以使用 Blender 2.63 中的 Wiimote 。我的操作系统是ubuntu 12.04。 我设置 virtualenv 为构建提供正确的python版本。 这是我到目前为止所做的(bash-shell记录):

# Set up virtualenv with python3.2
sudo apt-get install python-setuptools  
sudo easy_install virtualenv  
virtualenv -p python3.2 --no-site-packages ~/env/cwiid_for_blender  
# to activate, type this:  
source ~/env/cwiid_for_blender/bin/activate  
python --version # returns "Python 3.2.3"  

# Build cwiid
# prerequisites  
sudo apt-get install bison bluez libbluetooth3 libbluetooth-dev libgtk2.0-0 libgtk2.0-dev  
# download and compile sources of cwiid  
mkdir -p ~/Downloads/cwiid  
cd ~/Downloads/cwiid  
git clone https://github.com/abstrakraft/cwiid.git  
cd cwiid  
source ~/env/cwiid_for_blender/bin/activate  
aclocal  
autoconf  
./configure  
make

这会失败,因为cwiid通常是针对python 2.7构建的。在配置脚本中有以下行:

PYTHON_VERSION=`$PYTHON -c 'import sys; print sys.version[:3]'`

将其更改为3.2语法后如下:

PYTHON_VERSION=`$PYTHON -c 'import sys; print( sys.version[:3] )'`

make脚本开始编译,但在点击以下行时失败:

gcc -L../libcwiid -rdynamic -o wminput main.o conf.o c_plugin.o uinput.o action_enum.o util.o py_plugin.o parser.o lexer.o -lcwiid -lbluetooth -ldl -lpthread -lpython3.2
/usr/bin/ld: cannot find -lpython3.2

有趣的是,如果我将mu附加到该行,则脚本可以继续下一个错误:

gcc -L../libcwiid -rdynamic -o wminput main.o conf.o c_plugin.o uinput.o action_enum.o util.o py_plugin.o parser.o lexer.o -lcwiid -lbluetooth -ldl -lpthread -lpython3.2mu

我不明白gcc在哪里搜索3.2库以及如何指定它。具体来说,我不明白是否必须修复configure脚本,或者我是否必须更改我的环境以解决此问题。 到目前为止,其他人的建议:

  • python3.2->python3.2mu创建一个符号链接。 (但在哪里?尝试了几个地点,没有工作)
  • 添加包含目录的文件以在/etd/ld.so.conf.d/
  • 中查找

那么, gcc如何找到构建libcwiid所需的python3.2库?

2 个答案:

答案 0 :(得分:0)

首先,确保已安装Python开发库。

sudo apt-get install python3.2-dev

其次,我不明白为什么首先需要Python库来构建它。 libcwiid似乎不包含任何Python或包含Python库。我建议你删除-lpython3.2,看看会发生什么。包装libcwiid的Python模块当然需要Python,但这是另一个问题。

另请注意,cwiid显然不支持Python 3.但如果你想要cwiid Python模块,那就是一个问题,即如果你想从Python 3中使用它。你的错误是在编译libcwiid时,虽然,这是一个C库。

答案 1 :(得分:0)

一段时间后,很明显configure脚本没有正确解释python版本。这在Makefile中显示,因为它们包含2.7版本的直接链接。在更正了make文件之后,编译继续解决了真正的问题。所以现在,我正在尝试移植真正的代码。