我已经用
安装了psycopg2pip 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安装的。)
答案 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机器上运行,最好避免使用。