22

我为我的一项任务构建了 quickfix 引擎 ( http://www.quickfixengine.org/ ),并且还为它构建了 python 支持。

不幸的是,这是一个多用户环境,我无权访问 python 安装路径。因此 make install 命令尝试复制文件并失败。我设法注释掉它试图这样做的两行并且 make install 完成。由于我无法将文件放在那里,我可以将创建的.so文件放在哪里?

我如何让 python 知道它在那里?我查看了 python.org 文档,但它只描述了setup.py安装的过程。

我还尝试将.so的路径放入 sys.path,但没有用。是否有任何关于 python 包解剖结构的文件?谢谢。

4

3 回答 3

19

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

在这种情况下,一个快速而肮脏的修复方法是编译 QuickFix 源,找到 Python 扩展模块(您在系统上以.so扩展名结尾),然后将该目录添加到您的PYTHONPATH环境变量中,例如,添加

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

或您的 shell 配置文件中的类似行。

更强大的解决方案包括确保使用./configure --prefix=$HOME/.local. 假设 QuickFix 知道将 Python 文件放在适当的site-packages中,当您这样做时make install,它应该将文件安装到~/.local/lib/pythonX.Y/site-packages,对于 Python 2.6+,它应该已经在您的 Python 路径中,作为每个用户的站点包目录

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

python setup.py install --user

对于 Python 2.6+。

于 2011-02-08T15:27:02.157 回答
3

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

最好和最简单的是使用 virtualenv。但这需要安装,导致捕获 22。:) 但请检查是否安装了 virtualenv。如果已安装,您可以执行以下操作:

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

然后你可以像往常一样运行安装,使用 /tmp/foo/python setup.py install。(显然,您需要在主目录的文件夹中创建虚拟环境,而不是在 /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 中,你应该已经启动并运行了!

于 2011-02-08T15:41:08.340 回答
2

以下是有关安装 Python 模块的官方常见问题解答:http: //docs.python.org/install/index.html

有一些提示可能会对您有所帮助。

于 2011-02-08T12:54:22.337 回答