如何阻止Python在Mac OS X上安装时将文件放入我的主目录?
我在我的Mac上尝试从源代码安装Python。(系统是OS X 10.6.2,文件是Python-2.6.5.tar.bz2)我之前做过这个,感觉很简单,但这次不知道怎么回事,在运行完./configure
和make
之后,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 个回答
你有没有检查一下make需要的参数或变量?可能有一个make的变量可以用来改变这个行为。无论如何,你有没有试过MacPorts?这可能是实现你想要的目标的更好解决方案。
一般来说,如果你的系统已经有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”来强制指定安装到这个位置。
哎呀,我自己解决了自己的问题。最近我创建了一个 ~/.pydistutils.cfg 文件,真是个傻理由。我忘了把这个文件删掉了。里面的内容是:
[install]
install_lib = ~/Library/Python/$py_version_short/site-packages
install_scripts = ~/bin
make install
这个命令会调用 setup.py
,而这个文件的设置覆盖了正常的 setup.py
行为。
Rob