簡體   English   中英

Unix 'which' 的 Python 模擬

[英]Python analog of Unix 'which'

在 *nix 系統中,可以使用which來找出命令的完整路徑。 例如:

$ which python
/usr/bin/python

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

有沒有一種簡單的方法可以找出模塊在 PYTHONPATH 中的位置。 就像是:

>>> which (sys)
'c:\\Python25\Lib\site-packages'

如果你這樣做:

modulename.__file__

您將獲得該確切模塊的完整路徑返回。 例如,導入 django:

>>>> import django
>>> django.__file__
'/home/bartek/.virtualenvs/safetyville/lib/python2.6/site-packages/django/__init__.pyc'

編輯:如果您沒有機會,我建議您查看下面的評論以獲得一些好的見解。

這有點python pywhich os django PIL但您可以輸入python pywhich os django PIL

import os, os.path
import sys

def pywhich(mod):
    for p in sys.path:
        try:
            if any(p.startswith(mod + '.py') for p in os.listdir(p)):
                return os.path.join(p, mod)
        except OSError:
            pass
    return "Not found"

if __name__ == '__main__':
    for arg in sys.argv[1:]:
        print arg, pywhich(arg)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM