如何获取 python 模块的路径(不是 sys.executable)

Posted

技术标签:

【中文标题】如何获取 python 模块的路径(不是 sys.executable)【英文标题】:How to get path of a python module ( not sys.executable ) 【发布时间】:2011-02-15 11:46:35 【问题描述】:

我需要在 python 程序中获取 PyQt 库的路径。程序作为脚本从另一个应用程序运行,因此我的

sys.executable = 'D:/program files/visum/exe/visum115.exe

我需要我的实际 python 路径(以及 PyQt 库模块的路径)

Path = C:\Python25\Lib\site-packages\PyQt4\plugins

我正在尝试

os.environ['PYTHONPATH']

但我不确定它是否可以健壮。

问候!

PS。我需要它才能插入插件:

qApp.addLibaryPath('C:\Python25\Lib\site-packages\PyQt4\plugins')

【问题讨论】:

检查这里也许它可以帮助:***.com/questions/4693608/… 获取标准库路径及其模块列表:***.com/a/6464112/611007 【参考方案1】:

您可以尝试加载模块并检查它的 __file__ 属性以获取 .pyc 文件的路径。

例如这样:

import MODULE, os
path = os.path.dirname(MODULE.__file__)

问候, HTH!

【讨论】:

这就是我所需要的!谢谢! 这不适用于命名空间包,你会得到:AttributeError: module 'MODULE' has no attribute '__file__'【参考方案2】:

你要找的是sys.path:

>>> import sys
>>> sys.path
 ['',
 '/usr/lib/python2.7/site-packages/virtualenvwrapper.github-0.1-py2.7.egg',
 '/usr/lib/python2.7/site-packages/pycharm-debug.egg',
 '/usr/lib/python2.7/site-packages/Fom-0.9.2-py2.7.egg',
 '/usr/lib/python2.7/site-packages/blinker-1.1-py2.7.egg',
 '/usr/lib/python2.7/site-packages/httplib2-0.6.0-py2.7.egg',
 '/usr/lib/python27.zip',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-linux2',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7/site-packages',
 '/usr/lib/python2.7/site-packages/Numeric',
 '/usr/lib/python2.7/site-packages/PIL',
 '/usr/lib/python2.7/site-packages/gst-0.10',
 '/usr/lib/python2.7/site-packages/gtk-2.0',
 '/usr/lib/python2.7/site-packages/setuptools-0.6c11.egg-info',
 '/usr/lib/python2.7/site-packages/wx-2.8-gtk2-unicode']

【讨论】:

但是如何在这个元组中找到python路径?【参考方案3】:

一个非常简单的解决方案:

import PyQt

PyQt.__file__

【讨论】:

以上是关于如何获取 python 模块的路径(不是 sys.executable)的主要内容,如果未能解决你的问题,请参考以下文章

模块 sys shell参数获取

python-sys模块

python之sys模块

python 3.6.5 sys模块和os模块

python——sys模块

Python Sys模块