在import
模塊的時候,python是經過系統路徑找到這些模塊的,咱們能夠將這些路徑打印出來:python
>>> pprint.pprint(sys.path) ['', '/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg', '/Library/Python/2.7/site-packages/python_recsys-0.2-py2.7.egg', '/Users/zhanglixin/opensource/ipython', '/Library/Python/2.7/site-packages/pexpect-3.0-py2.7.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages']
那麼,咱們放進這些路徑裏的模塊或包,就能夠不需指定路徑,直接使用import
導入了。特別的,/Library/Python/2.7/site-packages
,咱們經常使用的應該放在這裏。app
引入某一特定路徑下的模塊python2.7
sys.path.append(yourmodulepath)
將一個路徑加入到python系統路徑下,避免每次經過代碼指定路徑code
export PYTHONPATH=$PYTHONPATH:yourmodulepath
,/Library/Python/2.7/site-packages
目錄下好的建議ip
if __name__ == '__main__'
,保證你寫包既能夠import又能夠獨立運行,用於test。reload
來強制運行模塊,但不提倡。爲了組織好模塊,將多個模塊分爲一個包。包是python模塊文件所在的目錄,且該目錄下必須存在__init__.py
文件。常見的包結構以下:it
package_a ├── __init__.py ├── module_a1.py └── module_a2.py package_b ├── __init__.py ├── module_b1.py └── module_b2.py main.py
main.py
想要引用packagea
中的模塊module
a1
,能夠使用:from package_a import module_a1 import package_a.module_a1
packagea
中的module
a1
須要引用packageb
,那麼默認狀況下,python是找不到package
b
。咱們能夠使用sys.path.append('../')
,能夠在packagea
中的__init__.py
添加這句話,而後該包下得全部module都添加* import __init
_
便可。