今天,在尝试编写使用PIL的Python脚本的过程中,我发现本地计算机上似乎没有该脚本(OS X 10.5.8,默认为2.5 Python安装)。
所以我跑:
easy_install--prefix=/usr/local/python/pil
并且它抱怨/usr/local/python/lib/python2.5/site-packages尚不存在,因此我创建了它,然后重试,得到以下信息:
测试失败:/usr/local/python//lib/python2.5/site-packages不支持.pth文件错误:错误的安装目录或PYTHONPATH
您正在尝试将软件包安装到PYTHONPATH以外的目录中,而Python不会从该目录中读取“ .pth”文件。您指定的安装目录(通过--install-dir,--prefix或distutils默认设置)为:
/usr/local/python//lib/python2.5/site-packages
并且您的PYTHONPATH环境变量当前包含:
''
好的,很公平-我没有做任何事情来设定路径。所以我在〜/ .bash_profile中添加了一条快速线:
PYTHONPATH =“ $ PYTHONPATH:/usr/local/python/lib/python2.5”
而source它,然后再试一次。
同样的错误信息。
鉴于PYTHONPATH设置明确,这有点奇怪。我可以echo $PYTHONPATH回来:/usr/local/python/lib/python2.5。我决定从内部检查包含路径的样子:
importsysprint"\n".join(sys.path)
产生:
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 /System/Library/Frameworks/Python.framework /Versions/2.5/lib/python2.5/plat-darwin /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac /System/Library/Frameworks/Python.framework/Versions /2.5/lib/python2.5/plat-mac/lib-scriptpackages /System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python /System/Library/Frameworks/Python.framework/Versions/2.5 /lib/python2.5/lib-tk /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload /Library/Python/2.5/site-packages / System / Library / Frameworks /Python.framework/Versions/2.5/Extras/lib/python/PyObjC
从中/usr/local/python/yadda/yadda明显缺失。
不知道我应该在这里做什么。如何获取python将该位置识别为包含路径?
更新
正如Sven Marnach所建议的那样,我忽略了导出PYTHONPATH。我已经纠正了这个问题,现在当我sys.path从Python中打印出来时看到了它。但是,TEST FAILED仅使用新的PYTHONPATH环境变量,我仍然收到上面提到的错误消息。
因此,我尝试将其从更改/usr/local/python/lib/python2.5为/usr/local/python/lib/python2.5/site-packages,导出,然后easy_install再次运行同一命令。这导致了一个全新的结果,起初看起来像成功(但不是):
Creating/usr/local/python/lib/python2.5/site-packages/site.pySearchingforpilReadinghttp://pypi.python.org/simple/pil/Readinghttp://www.pythonware.com/products/pilReadinghttp://effbot.org/zone/pil-changes-115.htmReadinghttp://effbot.org/downloads/#ImagingBestmatch:PIL1.1.7Downloadinghttp://effbot.org/media/downloads/PIL-1.1.7.tar.gzProcessingPIL-1.1.7.tar.gzRunningPIL-1.1.7/setup.py-q bdist_egg--dist-dir/var/folders/XW/XWpClVq7EpSB37BV3zTo+++++TI/-Tmp-/easy_install-krj9oR/PIL-1.1.7/egg-dist-tmp--Pyauy---using frameworks at/System/Library/Frameworks[snipped:compiler warnings]--------------------------------------------------------------------PIL1.1.7SETUP SUMMARY--------------------------------------------------------------------version1.1.7platform darwin2.5.1(r251:54863,Sep12010,22:03:14)[GCC4.0.1(AppleInc.build5465)]-----------------------------------------------------------------------TKINTER support available---JPEG support available---ZLIB(PNG/ZIP)support available***FREETYPE2 supportnotavailable***LITTLECMS supportnotavailable--------------------------------------------------------------------Toadd a missing option,make sure you have the required
library,andset the corresponding ROOT variableinthe
setup.py script.Tocheck the build,run the selftest.py script.zip_safe flagnotset;analyzing archive contents...Image:module references __file__Noeggs foundin/var/folders/XW/XWpClVq7EpSB37BV3zTo+++++TI/-Tmp-/easy_install-krj9oR/PIL-1.1.7/egg-dist-tmp--Pyauy(setup script problem?)
同样,这看起来不错,但是当我运行脚本时:
追溯(最近一次调用):
文件“ checkerboard.py”,导入图像中的第1行,ImageDraw ImportError:没有名为Image的模块
当我检查正在/usr/local/python/使用的内容时find .,我得到:
./lib ./lib/python2.5 ./lib/python2.5/site-packages ./lib/python2.5/site-packages/site.py ./lib/python2.5/site-packages/site。 pyc
所以...看起来没有什么模块(我假设site.py和site.pyc是元数据或帮助程序脚本)。安装到哪里去了?
我注意到这一点:
要检查构建,请运行selftest.py脚本。
但是真的不知道那是什么。
我还注意到“未找到鸡蛋”消息。这些提示之一吗?
解决方案
您正在OS X中使用Apple提供的Python 2.5。这是一个框架构建,默认情况下,它/Library/Python/2.5/site-packages用作已安装软件包的位置,而不是/usr/local。通常,您不需要指定--prefixOS X框架版本。还请注意,Apple随OS X 10.5提供的setuptools(easy_install)以及Python本身的版本也相当老。
也就是说,PIL在OS X尤其是OS X 10.5上完全正确地安装并不是特别简单。搜索档案或其他地方的技巧和/或二进制包。特别是如果您打算使用其他模块(例如MySQL或Django),我的建议是使用MacPorts之类的包管理器安装所有内容(Python和PIL)。