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

时间:2015-02-15 10:34:30

标签: python postgresql cygwin 64-bit psycopg2

我使用https://github.com/nwcell/psycopg2-windowshttps://bitbucket.org/topper/psycopg2-win64-py27/overview上的文章来安装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

谢谢, 和Manish

4 个答案:

答案 0 :(得分:1)

我收到了这组确切的消息 - 但不是在我当地的Cygwin / Babun开发环境中 - 当我推送到RHEL 7服务器进行测试时,我得到了它们。需要两天的时间来清除它,我如何解决它可能不适用于你。但我学会了一些可能做的事情。

这些错误的另一个原因在于这些错误报告(Python和psycopg互相指责) - 并且通常不值得阅读 - 在下面阅读:

它的要点?寻找一些更新 - 看起来他们可能都做了一些影响这一点的小改动。

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

  • pact install libpq-devel
  • pip install psycopg2
是的,就是这样! (有些envs可能还需要C编译器和python * -devel。)

安装 libpq-devel 的替代方法是安装Windows Postgres并将其pg_config文件的位置添加到PATH中,以便 pip 可以编译< strong> 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如何加载虚拟环境。 ----(这里只是另一个注释:我最终通过为Python 3.4.3编译另一个 mod_wsgi 来解决RHEL问题,根据他们的说明,来匹配我的虚拟环境。之前的 mod_wsgi 在Python 2.7.5下运行,该版本无法从C库导入_psycopg。此外,我根本不想运行2.7。)

答案 1 :(得分:0)

Env = python 2.7.10(cygwin发行版),Windows 7,Cygwin 64

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

2)从这里安装点子:pip.pypa.io/en/stable/installing /

3)pip install psycopg2由于'no pg_config ...'

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

5)这个(https://github.com/nwcell/psycopg2-windows)pip安装“工作”(没有错误)但是当我尝试导入时,我收到了消息: “ImportError:没有名为psycopg2的模块”

6)pip uninstall psycopg2

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

8)安装了Postgres&amp; pg_config来自http://www.enterprisedb.com/products-services-training/pgdownload#windows

9)将pg_config添加到路径

10)pip install psycopg2现在正常工作

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

堆栈跟踪: 帧功能参数 006001A5A60 0018007261A(000FFFFE3F4,0000000E514,00000000000,000FFFFDE50) 006001A5B00 00180073DD0(00077801FD6,00000000000,00000000140,00000000000) 006001A5D50 0018012EF8F(00600010540,00000000000,003DB05FDB0,6FFFFF28050) 006001A6040 0018012BC70(0000000000D,00000000000,00000000000,0018013D7DA) 00000000000 0018012C139(006001A6030,3630303030303030,3036303030303030,00000 00000B) 00000000000 0018012C30C(00000000000,10000000A8E73,6F007000650072,61006C0074 0072) 00000000000 00180127BFB(00000000000,10000000A8E73,6F007000650072,61006C0074 0072) 00000000000 00180071169(01000000010,00000000000,00000000000,000FFFFCE00) 000FFFFAA00 00180073D11(B64000B00630079,00000000088,1D17578E1C375D4,1D17578 E16661AE) 52004F00520052 64006F00630072(00000000088,1D17578E1C375D4,1D17578E16661AE,1 D175A09055FB4F) 52004F00520052 70002E00730065(1D17578E1C375D4,1D17578E16661AE,1D175A09055FB4 F,1D175A09055FB4F) 52004F00520052 B64000B00630079(1D17578E16661AE,1D175A09055FB4F,1D175A09055FB 4F,0000000180B) 52004F00520052 00000000088(1D175A09055FB4F,1D175A09055FB4F,0000000180B,0000 0002000) 52004F00520052 1D17578E1C375D4(1D175A09055FB4F,0000000180B,00000002000,01A0 0000020) 52004F00520052 1D17578E16661AE(0000000180B,00000002000,01A00000020,45001600 000000) 52004F00520052 1D175A09055FB4F(00000002000,01A00000020,45001600000000,4E004 500540058) 堆栈跟踪结束(可能存在更多堆栈帧)

(上面花了~2天。)

12)pip install pg8000工作

13)将pg8000导入.py文件并连接到DB (步骤12和13耗时约20分钟。)

答案 2 :(得分:0)

安装libpq是必须的,有时不会安装libpq-devel的一部分。截至目前,我已成功安装libpq5

答案 3 :(得分:0)

您必须使用Cygwin package installer安装两个软件包中的两个软件包:

  • libecpg6,获得psycopg2运行时库支持,如果没有它,您将获得 'ImportError: No module named _psycopg' when you run your script.
  • libecpg-devel,如果不使用它编译psycopg2,您会得到很多 例如使用pip工具安装psycopg2时出现pthread_***错误。

随着时间的流逝,那些软件包的名称可能会更改,但是您应该知道这是什么。 你不足。