查找python模块版本会在生产框上产生错误,但不会在我的开发机器上产生错误

时间:2017-01-17 23:02:37

标签: python django pgdb

我在我的MacOsX开发盒上安装了pgdb模块,我的代码工作(特别是pgdb.connect(等等)的行很好用。我在我的主服务器(linux)上运行代码并且它说它模块没有属性连接。

我认为这是一个版本问题,因此我按照此处的建议查看版本:

How to check version of python modules?

我就是这样做:

python
import pgdb
print pgdb.__version__

在我的macosX框中,在我的开发机器上返回版本就好了它再次出错:

AttributeError: 'module' object has no attribute '_version_'

奇怪的是,执行导入pgdb不会抛出错误,但它的作用就像它没有安装在我的生产盒上。也许这是一个我不知道的盒子上的图书馆?我应该说导入pgdb作为myspecialsomething(没有做到它仍然说没有连接)?

另一件事是,我确实做了一个完整性检查并在生产盒上做了一个sudo pip install pgdb并得到了这个:

Requirement already satisfied: pgdb in /usr/lib/python2.7/site-packages

要求已经满足:/usr/lib64/python2.7/site-packages中的psycopg2> = 2.5.2(来自pgdb)

此外,现在这不是一个名字冲突的问题,就像一张海报认为可能是重复的。还有其他事情正在发生,虽然有趣的是,当我检查我的os x正在使用的文件和我的centos用于pgdb的文件时,我得到了两个不同的答案:(路径不会让我感到惊讶,但文件本身会这样做)

MacOS X:

 >>> pgdb.__file__
 '/usr/local/lib/python2.7/site-packages/pgdb.pyc'

CentOS的:

 >>> pgdb.__file__
 '/usr/lib/python2.7/site-packages/pgdb/__init__.pyc'

不知道差异。

1 个答案:

答案 0 :(得分:0)

您当前的工作目录中可能有文件pgdb.py,即您从中启动Python的目录。删除或重命名,然后重试。

您可以找到模块所在的位置:

print pgdb.__file__

或:

import os

print os.path.abspath(pgdb.__file__)