6

我看到可以安装多个版本的 Python 包:

$ locate signals.py | grep python
/usr/lib/pymodules/python2.7/zim/signals.py
/usr/lib/pymodules/python2.7/zim/signals.pyc
/usr/lib/python2.7/dist-packages/bzrlib/smart/signals.py
/usr/lib/python2.7/dist-packages/bzrlib/smart/signals.pyc
/usr/lib/python2.7/unittest/signals.py
/usr/lib/python2.7/unittest/signals.pyc
/usr/lib/python3.2/unittest/signals.py

我如何检查应用程序正在使用哪个版本的包(即哪个文件,而不是哪个版本号)?忽略明显的“Zim 将使用该包/usr/lib/pymodules/python2.7/zim/signals.py”有没有办法查看哪个文件正在用于特定的 Python 包?

有些包我可以崩溃并查看回溯。但是,我认为这不是最好的方法!

4

2 回答 2

8

__file__属性会告诉你:

>>> from unittest import signals
>>> signals.__file__
'/usr/lib/python2.7/unittest/signals.pyc'

.pyc是已编译的文件,因此在这种情况下,您实际要查找的文件是/usr/lib/python2.7/unittest/signals.py文件。

于 2013-07-10T05:50:49.130 回答
3

我希望我理解正确,但是您可以通过以下方式找到您加载的模块的位置:

shell> python -c 'import jinja2; print jinja2.__file__'
/Library/Python/2.7/site-packages/jinja2/__init__.pyc
于 2013-07-10T05:51:21.617 回答