如何阻止Python在Mac OS X上安装时将文件放入我的主目录?

0 投票
3 回答
908 浏览
提问于 2025-04-15 22:06

我在我的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
正在安装库文件
创建 /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 -> /Users/rob/Library/ Python/2.6/site-packages
复制 build/lib.macosx-10.4-x86_64-2.6/_AH.so -> /Users/rob/Library/ Python/2.6/site-packages
复制 build/lib.macosx-10.4-x86_64-2.6/_App.so -> /Users/rob/Library/ 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) (dot 1)] 在 darwin 上
输入 "help", "copyright", "credits" 或 "license" 获取更多信息。
>>> import zlib
追踪(最近的调用最后):
    文件 "", 第 1 行,在
ImportError: 没有名为 zlib 的模块

有没有人知道哪里出问题了?

谢谢,
Rob

3 个回答

0

你有没有检查一下make需要的参数或变量?可能有一个make的变量可以用来改变这个行为。无论如何,你有没有试过MacPorts?这可能是实现你想要的目标的更好解决方案。

1

一般来说,如果你的系统已经有Python,或者有包管理工具可以帮你安装,那就不要自己手动安装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”来强制指定安装到这个位置。

2

哎呀,我自己解决了自己的问题。最近我创建了一个 ~/.pydistutils.cfg 文件,真是个傻理由。我忘了把这个文件删掉了。里面的内容是:

[install]
install_lib = ~/Library/Python/$py_version_short/site-packages
install_scripts = ~/bin

make install 这个命令会调用 setup.py,而这个文件的设置覆盖了正常的 setup.py 行为。

Rob

撰写回答