Как получить путь модуля Python (не sys.executable) - PullRequest
8 голосов
/ 15 февраля 2011

Мне нужно получить Path для библиотеки PyQt в программе Python. Программа запускается как скрипт из другого приложения, поэтому мой

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')

Ответы [ 2 ]

18 голосов
/ 15 февраля 2011

вы можете попробовать загрузить модуль и после проверки его атрибута __ file __ получить путь к файлу .pyc.

например, вот так:

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

С уважением, НТН!

5 голосов
/ 15 февраля 2011

То, что вы ищете, это 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']
...