我使用--no-site-packages选项创建了virtualenv环境。激活virtualenv后,我注意到在“python”提示符处导入psycopg2会导入已过时的系统库,但是在“python2.6”提示符处导入它会将我安装的库的较新版本导入到virtualenv 。Virtualenv在不应该使用系统软件包时
这是为什么?我如何才能在启用virtualenv时使用virtualenv软件包?
我在OS X上,如果它很重要。
编辑回应下面杰夫的评论:
同时有“巨蟒”,在我的virtualenv/bin目录“python2.6的”可执行文件。 “python2.6”是一个“python”的符号链接,“python”是一个二进制文件。
(ice_development)[[email protected]:~] $ ls -l Virtualenv/ice_development/bin/
total 264
-rw-r--r-- 1 jacob staff 2086 Sep 8 18:13 activate
.....
-rwxr-xr-x 1 jacob staff 50720 Sep 8 18:13 python
lrwxr-xr-x 1 jacob staff 6 Sep 8 18:13 python2.6 -> python
随着ENV激活,“哪个python”和“哪个python2.6”都指向ENV目录。
(ice_development)[[email protected]:~] $ which python
/Users/jacob/Virtualenv/ice_development/bin/python
(ice_development)[[email protected]:~] $ which python2.6
/Users/jacob/Virtualenv/ice_development/bin/python2.6
(ice_development)[[email protected]:~] $
此外,在命令行使用可执行文件后,提示符是相同的。
(ice_development)[[email protected]:~] $ python2.6
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
>>> psycopg2.__version__
'2.2.2 (dt dec ext pq3)'
>>> quit()
(ice_development)[[email protected]:~] $ python
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
>>> psycopg2.__version__
'2.0.13 (dt dec ext pq3)'
>>> quit()
的〜/ ENV/lib中/ python2.6的/ site-packages目录包含psycopg2的新版本(2.2.2):
(ice_development)[[email protected]:~] $ ls Virtualenv/ice_development/lib/python2.6/site- packages/
Twisted-10.1.0-py2.6-macosx-10.6-universal.egg setuptools-0.6c11-py2.6.egg
easy-install.pth setuptools.pth
pip-0.7.2-py2.6.egg txpostgres-0.3.0-py2.6.egg
psycopg2 zope.interface-3.6.1-py2.6-macosx- 10.6-universal.egg
psycopg2-2.2.2-py2.6.egg-info
然而,在不同的提示进口进口psycopg2两个不同的版本。
提示符是相同的,因为它们都使用相同的版本。我的2.6 virtualenv和non-virtual共享相同的时间戳。 – xnine 2010-09-10 00:11:21