2011-02-08 129 views
16

我为我的一个任务构建了quickfix引擎(http://www.quickfixengine.org/),并且也为它构建了python支持。不幸的是,这是一个多用户环境,我没有访问oython安装路径。因此,make install命令尝试复制文件并失败。我设法注释了它试图做到这一点的两条线,并完成了make install。由于我无法将文件放在那里,我可以在哪里放置创建的.so文件。我如何让Python知道它在那里?我查看了python.ord文档,但它仅描述了setup.py安装的过程。此外,我试图把.so在sys.path中的路径,这没有奏效。还有关于python软件包解剖的文档吗?谢谢。如何手动安装python库

+0

“另外我试图在sys.path中放入.so的路径,但没有奏效。“您是否曾尝试从脚本(或交互式会话)中将扩展模块导入与扩展名为`.so`的文件相同的目录? – gotgenes 2011-02-10 03:57:44

回答

15

我打算假设编译QuickFix包不会生成setup.py文件,而只是编译Python绑定并依靠make install将它们放在适当的位置。

在这种情况下,一个快速和肮脏的解决办法是编译QuickFix的来源,找到Python扩展模块(您的系统,这些末端用.so扩展上显示),以及该目录添加到您的PYTHONPATH环境变量例如,在您的shell配置文件中添加

export PYTHONPATH=~/path/to/python/extensions:PYTHONPATH 

或类似的行。

更强大的解决方案将包括确保与./configure --prefix=$HOME/.local编译。假设QuickFix知道将Python文件放在合适的site-packages中,那么当您执行make install时,它应该将文件安装到~/.local/lib/pythonX.Y/site-packages,对于Python 2.6+,它应该已经在Python路径上作为per-user site-packages directory

如果,另一方面,它确实提供了一个setup.py文件,只需为Python 2.6+运行

python setup.py install --user 

2

这里是安装Python模块的官方FAQ:http://docs.python.org/install/index.html

有一些技巧,这可以帮助你。

+0

是的,我查看了它。但问题是它描述了如何安装这些东西被打包成一个python模块(用setup.py来安装),它不会告诉你如何安装一些库,它会在.so文件中留下一个。: – 2011-02-08 13:05:19

3

您需要将它安装在您的home文件夹的目录中,并以某种方式操纵PYTHONPATH,以便包含目录。

最好也是最简单的就是使用virtualenv。但是这需要安装,导致一个catch 22. :)但检查是否安装了virtualenv。如果安装了它,你可以这样做:

$ cd /tmp 
$ virtualenv foo 
$ cd foo 
$ ./bin/python 

然后,你可以运行安装像往常一样,用的/ tmp /富/蟒蛇的setup.py安装。 (显然你需要在你的主目录下的虚拟环境中创建虚拟环境,而不是在/ tmp/foo中;))

如果没有virtualenv,你可以安装你自己的本地Python。但是这也许是不允许的。然后你就可以在本地目录中安装包的包:

$ wget http://pypi.python.org/packages/source/s/six/six-1.0b1.tar.gz#md5=cbfcc64af1f27162a6a6b5510e262c9d 
$ tar xvf six-1.0b1.tar.gz 
$ cd six-1.0b1/ 
$ pythonX.X setup.py install --install-dir=/tmp/frotz 

现在,你需要添加/tmp/frotz/pythonX.X/site-packages到您的PYTHONPATH,你应该启动和运行!