keystone入口manage.py

/opt/stack/keystone/keystone/cmd/manage.pypython

OpenStack全部項目都是基於Python開發,而且都是標準的Python項目,經過setuptools工具管理項目,負責Python模塊的安裝和分發。想知道一個項目有哪些服務組成,最直接有效的辦法就是找到入口函數(main函數)在哪裏,只要是標準的基於setuptools管理的項目的全部入口函數都會在項目根目錄的setup.cfg文件中定義,console_scripts就是全部服務組件的入口,好比nova(Mitaka版本)的setup.cfg的console_scripts以下:

[entry_points]
...
console_scripts =linux

 

進入到cd /opt/stack/keystone/keystone/cmd/ 這個目錄,而後python命令進入python環境bootstrap

pythonpython2.7

import os
import sys函數

>>> os.getcwd() #獲區當前目錄
'/opt/stack/keystone/keystone/cmd'工具

>>> dir1 = '/opt/stack/keystone/keystone/cmd' #獲區該目錄下的文件列表
>>> os.listdir(dir1)
['__init__.py', 'status.py', 'bootstrap.py', 'cli.pyc', 'doctor', 'manage.py', '__init__.pyc', 'manage.pyc', 'cli.py', 'bootstrap.pyc']spa

>>> print os.path.abspath('manage.py') #注意括號中的文件名須要加上引號
/opt/stack/keystone/keystone/cmd/manage.py
>>> os.path.abspath('manage.py')
'/opt/stack/keystone/keystone/cmd/manage.py'
>>> orm

>>> possible_topdir = os.path.normpath(os.path.join(os.path.abspath('manage.py'),
... os.pardir,
... os.pardir,
... os.pardir))
>>> possible_topdir
'/opt/stack/keystone'
>>> os.pardir
'..'
>>> 索引

>>> dir2 = os.path.join(possible_topdir, 'keystone','__init__.py')
>>> dir2
'/opt/stack/keystone/keystone/__init__.py'
>>> ip

>>> os.path.exists('/opt/stack/keystone/keystone/__init__.py')
True
>>>

>>> sys.path.insert(0, possible_topdir)  #最終結果就是往sys.path裏添加了/opt/stack/keystone這個路徑,往列表裏指定索引位置插入元素sys.path.insert(0, possible_topdir)

>>> sys.path #是一個列表
['', '/opt/stack/keystone', '/opt/stack/cinder', '/opt/stack/neutron', '/opt/stack/nova', '/opt/stack/placement', '/opt/stack/horizon', '/opt/stack/glance', '/opt/stack/tempest', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
>>>

>>> sys.argv  # 返回一個空列表
['']

 

/opt/stack/keystone/keystone/cmd/cli.py  經過manage.py調用cli.py裏的main函數

/usr/local/lib/python2.7/dist-packages 中能夠找到oslo

相關文章
相關標籤/搜索