Python,Cygwin-ImportError:没有名为_psycopg的模块

Python,Cygwin-ImportError:没有名为_psycopg的模块,python,postgresql,cygwin,64-bit,psycopg2,Python,Postgresql,Cygwin,64 Bit,Psycopg2,我在和上使用了这篇文章来安装psycopg2,并在Python2.7和Cygwin上工作 安装运行正常,我在/usr/lib/python2.7/site-packages/psycopg2-2.5.3-py2.7.egg/目录中看到了该包 但是,导入不起作用。。你知道这个错误吗 Python 2.7.8 (default, Jul 25 2014, 14:04:36) [GCC 4.8.3] on cygwin Type "help", "copyright", "credits" or "l

我在和上使用了这篇文章来安装psycopg2,并在Python2.7和Cygwin上工作

安装运行正常,我在/usr/lib/python2.7/site-packages/psycopg2-2.5.3-py2.7.egg/目录中看到了该包

但是,导入不起作用。。你知道这个错误吗

Python 2.7.8 (default, Jul 25 2014, 14:04:36)
[GCC 4.8.3] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/psycopg2-2.5.3-py2.7.egg/psycopg2/__init__.py", line 50, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: No module named _psycopg
Python 2.7.8(默认,2014年7月25日,14:04:36)
[GCC 4.8.3]关于cygwin
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入psycopg2
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.7/site packages/psycopg2-2.5.3-py2.7.egg/psycopg2/_init__.py”,第50行,in
从psycopg2.\u psycopg导入二进制、数字、字符串、日期时间、ROWID
ImportError:没有名为_psycopg的模块
谢谢,
Manish

当我推到RHEL 7服务器进行测试时,我得到了这组消息——但不是在我本地的Cygwin/Babun开发环境中。我花了两天的时间才把它冲洗出来,而我解决它的方法可能对你不适用。但我学到了一些可能有用的东西

这个错误的另一个原因在这些bug报告中被详细讨论过(Python和psycopg互相指责)——通常不值得一读——请阅读下面的内容:

要点是什么?寻找一些更新——看起来他们可能都做了一些小的改变来影响这一点

无论如何。。。这就是我在Cygwin中安装psycopg2的方式(假设Babun的pact安装程序可用):

  • pact安装libpq-devel
  • pip安装psycopg2
是的,就是这样!(某些环境可能还需要C编译器和python*-devel。)

安装libpq-devel的另一种方法是安装Windows Postgres,并将其
pg_-config
文件的位置添加到路径中,以便pip可以编译psycopg2——但是从Cygwin shell安装libpq-devel会更干净,并且会将其
pg_-config
其中,pip已经可以找到它

我从虚拟环境中安装了pyscopg2,但这并不重要。然而,重要的可能是以下情况之一:

  • Python版本:您使用的是2.7.8(几乎是当时的最新版本),我使用的是3.4.3。请尝试2.7的更高版本
  • psycopg2版本:您使用的是2.5.3,我使用的是2.6.1
  • Python安装冲突。检查Python中的
    sys.path
    值,确保它看起来像您期望的那样。根据您发布的内容,这似乎不是您的问题,但我提到这一点是因为这最终是我在RHEL 7上的问题,也是Apache如何加载虚拟环境的问题。---(这里还有一点需要注意:我最终解决了RHEL问题,按照他们的指示,为Python 3.4.3编译了另一个mod_wsgi,以匹配我的虚拟环境。以前的mod_wsgi是在Python 2.7.5下运行的,该版本无法从C库导入
    \u psycopg
    。此外,我没有我根本不想让2.7运行。)
Env=python 2.7.10(cygwin发行版),Windows 7,cygwin 64

1) pip安装psycopg2失败,因为我没有pip 调试

2) 从此处安装的pip:pip.pypa.io/en/stable/installing/

3) pip安装psycopg2失败,原因是“没有pg_配置…”

4) win的psycopg2安装程序(www.stickpeople.com/projects/python/win-psycopg/)失败,因为我使用的是cygwin的python安装,而不是机器注册表中的python,并且此安装程序不允许用户安装Windows注册的python以外的任何其他地方 (安装成功,但文件不在我需要的地方。) (“复制”文件不起作用。)

5) 此()pip安装“正常”(未给出错误),但当我尝试导入时,收到消息: “导入错误:没有名为psycopg2的模块”

6) pip卸载psycopg2

7) 尝试pip安装libpq-dev和python-dev “找不到满足libpq dev要求的版本(来自版本:) 找不到与libpq dev匹配的分发版“

8) 从此处安装Postgres和pg_配置

9) 将pg_配置添加到路径

10) pip安装psycopg2现在工作了

11) 在.py文件中导入psycopg2导致内核转储

堆栈跟踪: 框架函数参数 006001A5A60 0018007261A(000FFFF3F4,0000000 E514,00000000000,000FFFFDE50) 006001A5B00 00180073DD0(00077801FD6,0000000000000000000,14000000000000) 006001A5D50 0018012EF8F(00600010540,00000000000003DB05FDB0,6FFFFF28050) 006001A6040 0018012BC70(0000000000 D、00000000000、00000000000、0018013D7DA) 000000000000018012C139(006001A60303630303030303030303000000 (百万B) 000000000000018012C30C(000000000001000000A8E73、6F007000650072、61006C0074 0072) 0000000000000180127BFB(000000000001000000A8E73、6F007000650072、61006C0074 0072) 0000000000000180071169(01000000010000000000000000000FFCE00) 000FFFFAA00 00180073D11(B64000B0063007900000000088,1D17578E1C375D4,1D17578 E16661AE) 52004F00520052 64006F00630072(00000000088,1D17578E1C375D4,1D17578E16661AE,1 D175A09055FB4F) 52004F00520052 70002E00730065(1D17578E1C375D4、1D17578E16661AE、1D175A09055FB4 F、 1D175A09055FB4F) 52004F00520052 B64000B00630079(1D17578E16661AE、1D175A09055FB4F、1D175A09055FB 4F,0000000(180B) 52004F0052005200000000088(1D175A09055FB4F,1D175A09055FB4F,0000000180B,0000 0002000) 52004F00520052 1D17578E1C375D4(1D175A09055FB4F,0000000 180B,0000000 2000,01A0 0000020) 52004F00520052 1D17578E16661AE(0000000 180B、0000000 2000、01A00000020、45001600 000000) 52004F00520052 1D175A09055FB4F(0000000 2000、01A00000020、4500160000000、4E004 500540058) 堆栈结束跟踪(可能存在更多堆栈帧)