【发布时间】:2010-11-04 22:18:36
【问题描述】:
我创建了一个 virtualenv,虽然它有很多系统路径,但没有其他路径。具体来说,似乎不包括 pyshared 和 dist-packages。结果,我的系统范围的 MySQLdb 和 psycopg2 不可用。任何想法为什么?
【问题讨论】:
-
详细信息:您是如何创建 virtualenv 的。命令是什么。
标签: python path virtualenv
我创建了一个 virtualenv,虽然它有很多系统路径,但没有其他路径。具体来说,似乎不包括 pyshared 和 dist-packages。结果,我的系统范围的 MySQLdb 和 psycopg2 不可用。任何想法为什么?
【问题讨论】:
标签: python path virtualenv
【讨论】:
我知道的唯一可能的方法是,如果您使用参数 --no-site-packages 创建了您的 virtualenv:
来自Here:
如果你使用 virtualenv 构建 --no-site-packages ENV 它不会继承任何包 /usr/lib/python2.5/site-packages(或 无论您的全球站点包在哪里 目录是)。如果你可以使用这个 无法控制站点包 并且不想依赖 包在那里,或者你只是想要更多 与全球系统隔离。
所以这里有一个例子来了解更多:
首先,我将正常创建一个 virtualenv(没有 --no-site-package),你会看到 我总是可以访问安装在我的系统站点包(或 dist-packages)中的 django:
$ virtualenv A
New python executable in A/bin/python
Installing setuptools............done
$ source A/bin/activate
(A)$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.__file__
'/usr/local/lib/python2.6/dist-packages/django/__init__.pyc'
但现在我将使用 --no-site-package 创建虚拟环境:
$ virtualenv B --no-site-package
New python executable in B/bin/python
Installing setuptools............done.
$ source B/bin/activate
(B)$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named django
现在您看到 virtaulenv 能够从我机器中的系统 dist-packages (ubuntu) 访问 django。
希望这会有所帮助:)
【讨论】: