使用pip安装Psycopg2但无法在OS X 10.9上导入模块

时间:2014-02-24 00:06:55

标签: python osx-mavericks psycopg2

我已经用

安装了psycopg2
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与Homebrew一起安装.psycopg2是用pip安装的。)

1 个答案:

答案 0 :(得分: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

如果可行,您需要在/usr/local/bin变量之前/usr/bin放置PATH,以便您的shell每次在OS X之前找到Homebrew的Python。如果您使用Bash(OS X中的默认shell),可以通过在.bash_profile中添加以下内容来实现此目的:

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

要确保您在脚本中运行正确的Python,请使用以下shebang行:

#!/usr/bin/env python

env将在PATH搜索Python并使用找到的第一个脚本运行脚本,就像从shell中键入python一样。 Bash脚本等应该继承PATH变量并找到正确的python而不做任何更改。

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