Python的类似Unix''的'

Bor*_*lik 6 python which

在*nix系统中,人们可以which 用来找出命令的完整路径.例如:

$ which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

whereis显示给定命令的所有可能位置

$ whereis python
python: /bin/python.exe /bin/python2.5-config /usr/bin/python.exe /usr/bin/python2.5-config /lib/python2.4 /lib/python2.5 /usr/lib/python2.4 /usr/lib/python2.5 /usr/include/python2.4 /usr/include/python2.5 /usr/share/man/man1/python.1
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以找到PYTHONPATH中模块的位置.就像是:

>>> which (sys)
'c:\\Python25\Lib\site-packages'
Run Code Online (Sandbox Code Playgroud)

Bar*_*tek 5

如果你这样做:

modulename.__file__

您将获得该确切模块的完整路径返回.例如,导入django:

>>>> import django
>>> django.__file__
'/home/bartek/.virtualenvs/safetyville/lib/python2.6/site-packages/django/__init__.pyc'
Run Code Online (Sandbox Code Playgroud)

编辑:如果您没有机会,我建议您查看下面的评论以获得一些好的见解.

  • 它不适用于`sys`,因为`sys`根本不是来自文件:它是一个内置模块.因此,对于哪个(sys)`没有明智的答案. (3认同)
  • 是否保证每个模块都具有`__file__`属性?例如:`>>> import sys >>> sys .__ file__ Traceback(最近一次调用last):文件"<stdin>",第1行,在<module>中AttributeError:'module'对象没有属性'__file__'> >> import os >>> os .__ file__'C:\\ Python25 \\ lib \\ os.pyc'` (2认同)