Python 3.3在OSX上找不到任何pip安装包?

时间:2012-10-18 18:54:53

标签: macos virtualenv pip virtualenvwrapper python-3.3

我最近从Python.org安装了Python 3.3 DMG。

我安装了pip,virtualenv和virtualenv-wrapper。

当我这样做时:

$ mkvirtualenv -p /usr/local/bin/python3 someenv

按预期创建环境。

然后当我做一个pip安装时,比如说:

(someenv) $ pip install beautifulsoup4

安装正确(无错误)。

然后我启动python:

(someenv) $ python
Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 01:25:11) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import bs4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'bs4'

我还尝试过其他一些软件包:pytz,pymemoize,mock,所有这些软件似乎都遭遇了同样的“No module named ...”问题。

查看虚拟环境的site-packages目录,包就在那里,只是解释器似乎无法找到它们。如果我执行了pip freeze,则会列出所有已安装的软件包。

有什么建议吗?

如果有帮助,我正在使用:

  • Python 3.3(再次,从Python.org上的.dmg安装)
  • pip v1.2.1
  • virtualenv-wrapper v1.8.2
  • 分发0.6.28
  • OSX 10.7(狮子)

编辑:根据要求,sys.path的输出为:

['', '/Library/Frameworks/Python.framework/Versions/3.3/lib/python33.zip', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/plat-darwin', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages']

因此缺少的是:`/Users/aparkin/.envs/someenv/lib/python3.3/site-packages' - 虚拟环境的site-packages目录。

编辑2:同样,在site-packages目录上执行ls -l会给出:

$ ls -l .envs/someenv/lib/python3.3/site-packages/
total 168
drwxr-xr-x  7 aparkin  staff    238 18 Oct 11:49 PyMemoize-0.1.1-py3.3.egg-info
drwxr-xr-x  3 aparkin  staff    102 18 Oct 11:51 __pycache__
drwxr-xr-x  7 aparkin  staff    238 18 Oct 11:34 beautifulsoup4-4.1.3-py3.3.egg-info
drwxr-xr-x  9 aparkin  staff    306 18 Oct 11:32 bs4
drwxr-xr-x  8 aparkin  staff    272 18 Oct 11:31 distribute-0.6.28-py3.3.egg
-rw-r--r--  1 aparkin  staff    237 18 Oct 11:31 easy-install.pth
drwxr-xr-x  6 aparkin  staff    204 18 Oct 11:49 memoize
drwxr-xr-x  7 aparkin  staff    238 18 Oct 11:51 mock-1.0.0-py3.3.egg-info
-rw-r--r--  1 aparkin  staff  75204 18 Oct 11:51 mock.py
drwxr-xr-x  4 aparkin  staff    136 18 Oct 11:31 pip-1.2.1-py3.3.egg
drwxr-xr-x  9 aparkin  staff    306 18 Oct 11:44 pytz
drwxr-xr-x  8 aparkin  staff    272 18 Oct 11:44 pytz-2012f-py3.3.egg-info
-rw-r--r--  1 aparkin  staff     30 18 Oct 11:31 setuptools.pth

2 个答案:

答案 0 :(得分:4)

Python 3.3的一项新功能是创建和管理虚拟环境的标准方法pyvenv。你应该改用它。

那就是说,你仍然可以让旧的virtualenv工作。要检查的一件事是使用失败的virtualenv sys.pathpython的值。您应该在其上看到virtualenv site-packages目录。如果是这样且导入仍然不起作用,请检查virtualenv lib目录,包括site-packages以获取正确的文件权限。

更新:virtualenv site-packages的内容乍一看看起来很合理。但sys.path的价值看起来与标准python3.3的价值非常相似,而不是virtualenv的价值。所以检查以确保你真的使用那个。尝试使用绝对路径运行virtualenv python,例如:

/path/to/someenv/bin/python3.3 -c 'import sys;print(sys.executable);print(sys.path)'

还要确保没有设置与Python相关的环境变量,例如PYTHONPATH或shell python的shell别名或函数。

env | grep PYTHON
echo $PATH
which python
type python

答案 1 :(得分:0)

我认为这是因为您在终端中为python设置了alias

如果您使用zsh,只需使用编辑器(例如vim)打开~/.zshrc,并删除python的别名,然后在终端中运行source ~/.zshrc或关闭终端窗口并重新打开它。

如果你不使用zsh,原理是一样的,只需删除别名。

这将解决您的问题。