2014-02-24 35 views
6

无法导入模块,我已经安装了psycopg2与Psycopg2安装带有画中画的作品,但在OS X 10.9

pip install psycopg2 

和它的工作就好了。安装输出有沿

In file included from ./psycopg/psycopg.h:33: 
./psycopg/config.h:71:13: warning: unused function 'Dprintf' [-Wunused-function] 
static void Dprintf(const char *fmt, ...) {} 
      ^
1 warning generated. 

行一对夫妇的警告,但最终它说

Successfully installed psycopg2 

,当我运行pip list它也会出现。

现在,当我尝试导入它在python我得到一个错误:

$ python 
Python 2.7.5 (default, Aug 25 2013, 00:04:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import psycopg2 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named psycopg2 

为什么不能Python的导入模块是否已成功安装?

(Python的2.7.5用自制psycopg2安装安装用PIP)

回答

5

OS X自带的Python 2.7.5已经;当你用Homebrew安装Python时,它会在不同的地方放置一个更新的版本,而不用接触内置的版本。 Homebrew的Python也带有Pip,而OS X则没有。这里发生的是,你使用Homebrew的pip安装psycopg2,然后运行OS X的python并尝试导入它。

运行/usr/local/bin/python(Homebrew的Python的完整路径),并从那里尝试import psycopg2

如果这样,你需要把放在你的PATH变量之前,以便你的shell每次在OS X之前找到Homebrew的Python。如果您使用的Bash(在OS X中的默认的shell),你可以通过将做到这一点在你的.bash_profile如下:

export PATH=/usr/local/bin:$PATH 

要确保你在脚本运行正确的Python,使用下面的家当行:

#!/usr/bin/env python 

env将搜索PATH Python和与第一个发现,与从你的shell中键入python运行该脚本。 Bash脚本等应该继承变量并在没有变化的情况下找到正确的python。

您也可以在您的shebang行(#!/usr/local/bin/python)中硬编码自制Python的路径,但这意味着您的脚本只能在安装了Homebrew Python的OS X机器上运行,并且最好避免。

+0

谢谢亚当。当我在终端中运行'$ usr/local/bin/python'时,我实际上可以导入psycopg2。 _But_当我尝试对'.bash_profile'进行建议修改时,没有更改生效。我使用了'$ source .bash_profile',然后是'$ python',但是旧的python仍然出现。我怎样才能使啤酒的Python在终端默认的? (另外,当我运行一个python脚本文件时,从我写的shell脚本中说出来,我怎样才能确保它是用brew的python调用的?) – bootsmaat

+1

我刚刚意识到我编写'set'时,我打算写'export' ;这应该让Bash在默认情况下找到合适的一个。我编辑了我的答案来解决这个问题,并回答你的其他问题。 –

+0

Phantastic,Adam。谢谢。有用。 – bootsmaat