如何设置本地python库目录/ PYTHONPATH?

时间:2010-12-09 00:42:04

标签: python macos path python-imaging-library easy-install

在尝试编写今天使用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。我决定从里面查看包含路径的样子:

import sys
print "\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。我已经纠正了这个问题,现在看到它出现在我从Python中打印出sys.path时。但是,我仍然得到了上面提到的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.py
Searching for pil
Reading http://pypi.python.org/simple/pil/
Reading http://www.pythonware.com/products/pil
Reading http://effbot.org/zone/pil-changes-115.htm
Reading http://effbot.org/downloads/#Imaging
Best match: PIL 1.1.7
Downloading http://effbot.org/media/downloads/PIL-1.1.7.tar.gz
Processing PIL-1.1.7.tar.gz
Running PIL-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]
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      darwin 2.5.1 (r251:54863, Sep  1 2010, 22:03:14)
              [GCC 4.0.1 (Apple Inc. build 5465)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.

To check the build, run the selftest.py script.
zip_safe flag not set; analyzing archive contents...
Image: module references __file__
No eggs found in /var/folders/XW/XWpClVq7EpSB37BV3zTo+++++TI/-Tmp-/easy_install-krj9oR/PIL-1.1.7/egg-dist-tmp--Pyauy (setup script problem?)

同样,这看起来不错,但是当我去运行我的脚本时:

  

追踪(最近的呼叫最后):
  文件“checkerboard.py”,第1行,in          import Image,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脚本。

但不知道那是什么。

我还注意到“没有发现鸡蛋”的消息。这些提示中有哪一个?

2 个答案:

答案 0 :(得分:4)

您在OS X中使用Apple提供的Python 2.5;它是一个框架构建,默认情况下,使用/Library/Python/2.5/site-packages作为已安装软件包的位置,而不是/usr/local。通常,您不需要使用OS X框架构建指定--prefix。还要注意Apple提供的OS X 10.5的setuptoolseasy_install)也和Python本身的版本一样旧。

也就是说,在OS X上完全正确地安装PIL尤其是OS X 10.5并不是特别简单。在档案馆或其他地方搜索提示和/或二进制包。特别是如果您打算使用其他模块,如MySQL或Django,我的建议是使用像MacPorts这样的包管理器安装所有内容(Python和PIL)。

答案 1 :(得分:1)

为什么在--prefix调用中指定easy_install?你有没有尝试过:

sudo easy_install pil

如果您只是尝试将PIL安装到默认位置,我认为easy_install可以找出正确的路径。 (显然,/usr/local/python不是......)

编辑:有人低估了这个答案,可能是因为它太简洁了 。我想,这就是我试图通过手机发布回答的结果。但它的要点是完全有效的,恕我直言:如果你使用--prefix来指定easy_install的自定义安装位置,那么你就是“做错了”。可能可能使这项工作成功,但easy_install文档中有一个关于custom installation locations的部分甚至没有提到这种可能性,除非作为一个小的调整virtual python选项。我建议您关注OS X instructions如果要安装到Mac上的自定义位置,--prefix似乎不适合这项工作。