如何阻止Mac OS X上的Python安装将内容放入我的主目录?

时间:2010-04-28 07:11:42

标签: python macos install configure

我正在尝试在Mac上从源代码安装Python。 (OS X 10.6.2,Python-2.6.5.tar.bz2)我以前做过这个很简单,但出于某种原因,这次是在./configuremake之后, sudo make install将一些东西放在我的主目录中,而不是放在/ usr / local / ...我期望的地方。 .py文件没问题,但不是.so文件......

RobsMac Python-2.6.5 $ sudo make install
[...]
/ usr / bin / install -c -m 644 ./Lib/anydbm.py /usr/local/lib/python2.6
/ usr / bin / install -c -m 644 ./Lib/ast.py /usr/local/lib/python2.6
/ usr / bin / install -c -m 644 ./Lib/asynchat.py /usr/local/lib/python2.6
[...]
运行build_scripts
运行install_lib
创建/ Users / rob / Library / Python
创建/Users/rob/Library/Python/2.6
创建/Users/rob/Library/Python/2.6/site-packages
复制build / lib.macosx-10.4-x86_64-2.6 / _AE.so - > /用户/抢劫/库/ 的Python / 2.6 / site-packages中
复制build / lib.macosx-10.4-x86_64-2.6 / _AH.so - > /用户/抢劫/库/ 的Python / 2.6 / site-packages中
复制build / lib.macosx-10.4-x86_64-2.6 / _App.so - > /用户/抢劫/库/ 的Python / 2.6 / site-packages中
[...]

稍后,这会导致需要这些.so文件的导入失败。对于 示例...

RobsMac Python-2.6.5 $ python
Python 2.6.5(r265:79063,2010年4月28日,13:40:18)
[达尔文的GCC 4.2.1(Apple Inc. build 5646)(第1点)] 输入“帮助”,“版权”,“信用”或“许可”以获取更多信息 >>> import zlib
追溯(最近的呼叫最后):
文件“”,第1行,在中 ImportError:没有名为zlib的模块

任何想法有什么不对?

感谢, 罗布

3 个答案:

答案 0 :(得分:2)

卫生署。我已经回答了我自己的问题。最近我创建了一个〜/ .pydistutils.cfg文件,出于一些愚蠢的原因。我忘记删除该文件了。它的内容是:

[安装]
install_lib =〜/ Library / Python / $ py_version_short / site-packages
install_scripts =〜/ bin

make install调用setup.py,此文件覆盖了正常的setup.py行为。

Rob

答案 1 :(得分:1)

一般情况下,在系统上已有的Python(或源代码中的任何东西)上安装它时,或者当有包管理器为你安装时,这不是一个好主意。我强烈建议你不要手动安装Python ... Mac OS X 10.6 Snow Leopard附带Python 2.6开箱即用;如果你想要更新版本的Python 2.6,那么你应该安装MacPorts,并使用:

sudo port install python26 python_select

然后,您可以使用python_select在系统版本和MacPort版本之间切换。

如果您决定从源手动安装,那么执行此操作的方法是运行“make distclean”(或再次单独解压缩代码),然后运行“./configure --help”进行操作完整的配置选项列表。在Mac OS X上,它可能默认为/ usr / local以外的其他内容,在这种情况下,您可以通过使用“./configure --prefix = / usr / local”调用configure来强制它安装在该位置。

答案 2 :(得分:0)

你检查了参数或变量make expect吗?可能有一个make变量可用于覆盖该行为。无论如何,你试过MacPorts吗?它可能是你想要完成的更好的解决方案。