Python3 pip在virtualenv中全局安装

时间:2014-01-06 06:39:52

标签: python python-3.x virtualenv python-3.3 virtualenvwrapper

试图最终跳转到Python 3,但是遇到了virtualenvwrapper的一些问题。我首先创建虚拟环境,如下所示:

mkvirtualenv -p /usr/local/bin/python3 projectname

产生:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.3.3/Frameworks/Python.framework/Versions/3.3'
New python executable in projectname/bin/python3.3
Also creating executable in projectname/bin/python
Installing setuptools, pip...done.

到目前为止,这么好。我检查python控制台,以确保环境正在查看正确的解释器以及所有这些。这里是悲伤发生的地方(当virtualenv活跃时):

pip install flask声称成功,但唉:

Python 3.3.3 (default, Jan  2 2014, 13:26:32) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import flask
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'flask'

问题在于:

$ pip show flask
---
Name: Flask
Version: 0.10.1
Location: /usr/local/lib/python3.3/site-packages
Requires: Werkzeug, Jinja2, itsdangerous

除非我完全误解了virtualenv / wrapper及其各自的魔法(我很有可能),似乎pip install是全局安装Flask而不是我的virtualenv中的site-packages,因此virtualenv是无视它。

有什么线索在这里发生什么/如何解决?假设virtualenvwrapper准备好使用python3的黄金时段,我错了吗?我不需要破坏我的.bashrc或手动设置环境变量的漂亮解决方案更可取。我希望有一种方法可以通过virtualenv和virtualenvwrapper提供的API来实现。

谢谢!

2 个答案:

答案 0 :(得分:0)

我在pip安装包时遇到了问题,而不是在激活的virtualenv中。请查看问题(和答案)的pip installing in global site-packages instead of virtualenv

基本上,解决方案包括修改virtualenv中pip脚本的shebang,因为它们指向错误的python安装(全局而不是virtualenv)。只需将shebang更改为指向正确的位置即可设置。

注意:应该归功于提出解决方案的Chase Ries。

答案 1 :(得分:0)

我有同样的问题。它似乎从Virtualenv 1.11.4开始解决。