使用pip安装Psycopg2可以工作,但无法在OS X 10.9上导入模块

2024-06-08 15:47:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经安装了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为什么不能导入它?

(Python2.7.5与自制程序一起安装。psycopg2与pip一起安装。)


Tags: installpipinfromconfig警告functionpsycopg2
1条回答
网友
1楼 · 发布于 2024-06-08 15:47:14

OSX已经配备了Python2.7.5;当您在自制程序中安装Python时,它会将较新的版本放在不同的位置,而不会触及内置版本。Homebrew的Python也附带了Pip,而OS X没有。这里的情况是,您使用Homebrew的pip安装psycopg2,然后运行OS X的python并尝试导入它。

运行/usr/local/bin/python(自制Python的完整路径),然后从那里尝试import psycopg2

如果可以,您需要在变量PATH中的/usr/local/bin之前放置/usr/bin,这样您的shell每次都会在OS X之前找到自制的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)中硬编码到自制Python的路径,但这意味着您的脚本只能在安装了自制Python的OS X机器上运行,最好避免使用。

相关问题 更多 >