我想一些包安装到第三方site-packages
目录(超出标准的系统中的位置)。 有什么办法来设置这使得.pth那里的文件被尊重?
背景:我使用的是OS X,virtualenv中,和自制。 有没有经过很好的点子安装到virtualenv中了几包(特别是wxPython的在我的情况)。 在这种情况下,有代替他们工作自制包。 家酿创建在第三站点包文件夹/usr/local/lib/python2.7
。 我想简单地指向此文件夹,并将所有项目的维护有下brew
的控制。 不过,看来,这是不可能的。
- 附加到通过路径
$PYTHONPATH
不加载.pth文件。 ( 是否应的Python 2.6在OS X上处理在$ PYTHONPATH多易install.pth文件? ) - Python不容许嵌套或递归使用.pth文件。 ( 嵌套.pth文件或从网络加载额外的站点迪尔斯 )
- 对于virtualenv中的包装
add2virtualenv
增加了一些额外的智慧超越仅仅拥有目录中列出的.pth文件,但我相信这只是重新排序的路径列表。
我肯定不是唯一一个对这个问题感兴趣。 我敢打赌在线好一些一般的“PTH文件不能正常工作的问题和帖子说我偶然发现了与此相关的问题。 有没有好的解决办法?
看看该网站的模块。 它提供的功能addsitedir
应该做你想要什么。
用最简单的方法是创建一个文件名为sitecustomize.py
或usercustomize.py
,并将其放置在当前PYTHONPATH
目录(或者说在结束了任意目录sys.path
)包含以下内容:
import site
site.addsitedir('/usr/local/lib/python2.7')
当Python开始试图导入sitecustomize
然后usercustomize
,这就是为什么这个工程。 从网站的文档:
这些路径的操作后,试图导入一个名为模块sitecustomize
,它可以执行任意站点特定的自定义。 它通常由在site-packages目录系统管理员创建的。 如果导入失败并ImportError
例外,它被忽略。
在此之后,试图导入一个名为模块usercustomize
,它可以执行任意成用户自定义,如果ENABLE_USER_SITE
是真实的。 这个文件的目的是在用户站点包目录(见下文)创建的,这是一部分sys.path
除非禁用-s
。 一个ImportError
将被忽略。
有PEP 370专门针对每个用户创建site-packages
目录,处理,其中用户对全系统没有管理权限的情况下site-packages
。
例如在Unix(包括Mac OS),并假设一个使用Python 3.6,可以创建下面的目录,并将.pth
文件里面就有
~/.local/lib/python3.6/site-packages
文章来源: Creating a secondary site-packages directory (and loading packages from .pth files therein)