本文目錄一覽:
如何製作python安裝模塊
Python模塊的安裝方法:
1. 單文件模塊:直接把文件拷貝到$python_dir/lib
2. 多文件模塊,帶setup.py:python setup.py install
3. egg文件,類似Java的jar:
1) 下載ez_setup.py,運行python ez_setup
2) easy_install *.egg
雖然Python的模塊可以拷貝安裝,但是一般情況下推薦製作一個安裝包,即寫一個setup.py文件來安裝。
setup.py文件的使用:
% python setup.py build #編譯
% python setup.py install #安裝
% python setup.py sdist #製作分發包
% python setup.py bdist_wininst #製作windows下的分發包
% python setup.py bdist_rpm
setup.py文件的編寫:
setup.py中主要執行一個 setup函數,該函數中大部分是描述性東西,最主要的是packages參數,列出所有的
package,可以用自帶的find_packages來動態獲取package。所以setup.py文件的編寫實際是很簡單的。
簡單的例子:
setup.py文件:
from setuptools import setup, find_packages
setup(
name=”mytest”,
version=”0.10″,
description=”My test module”,
author=”Robin Hood”,
url=”h”,
license=”LGPL”,
packages= find_packages(),
scripts=[“scripts/test.py”],
)
mytest.py文件:
import sys
def get():
return sys.path
scripts/test.py文件:
import os
print os.environ.keys()
setup中的scripts表示將該文件放到 Python的Scripts目錄下,可以直接用。OK,簡單的安裝成功,可以運行所列舉的命令生成安裝包,或者安裝該python包。
本機測試成功(win32-python25)!
Python中的模塊和包的區別
1、模塊(Module)就是包含代碼的文件,不一定是Python代碼,有四種代碼類型的模塊:
•使用Python寫的程序( .py文件)
•C或C++擴展(已編譯為共享庫或DLL文件)
•包(包含多個模塊)
•內建模塊(使用C編寫並已鏈接到Python解釋器內)
使用模塊可以提高代碼的可維護性和重複使用,還可以避免函數名和變量名衝突。相同名字的函數和變量完全可以分別存在不同的模塊中,所以編寫自己的模塊時,不必考慮名字會與其他模塊衝突,但要注意盡量不要與內置函數名字衝突。
2、包(Package)就是包含模塊文件的目錄,目錄名稱就是包名稱,目錄中可以包含目錄,子目錄也是包,但包名稱應該包含上一級目錄的名稱。Python引入了按目錄來組織模塊是為了避免模塊名衝突,不同包中的模塊名可以相同。
注意,每一個包目錄下面都會有一個__init__.py的文件,這個文件是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空文件,也可以有Python代碼,因為__init__.py本身就是一個模塊,而它的模塊名就是包名。
python中的模塊,庫,包有什麼區別
1.python模塊是:
python模塊:包含並且有組織的代碼片段為模塊。
表現形式為:寫的代碼保存為文件。這個文件就是一個模塊。sample.py 其中文件名smaple為模塊名字。
關係圖:
2.python包是:
包是一個有層次的文件目錄結構,它定義了由n個模塊或n個子包組成的python應用程序執行環境。
通俗一點:包是一個包含__init__.py 文件的目錄,該目錄下一定得有這個__init__.py文件和其它模塊或子包。
常見問題:
引入某一特定路徑下的模塊
使用sys.path.append(yourmodulepath)
將一個路徑加入到python系統路徑下,避免每次通過代碼指定路徑
利用系統環境變量 export PYTHONPATH=$PYTHONPATH:yourmodulepath,
直接將這個路徑鏈接到類似/Library/Python/2.7/site-packages目錄下
好的建議:
經常使用if __name__ == ‘__main__’,保證寫包既可以import又可以獨立運行,用於test。
多次import不會多次執行模塊,只會執行一次。可以使用reload來強制運行模塊,但不提倡。
常見的包結構如下:
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中的模塊modulea1,可以使用:
from package_a import module_a1
import package_a.module_a1
如果packagea中的modulea1需要引用packageb,那麼默認情況下,python是找不到packageb。我們可以使用sys.path.append(‘../’),可以在packagea中的__init__.py添加這句話,然後該包下得所有module都添加* import __init_即可。
關係圖:
3.庫(library)
庫的概念是具有相關功能模塊的集合。這也是Python的一大特色之一,即具有強大的標準庫、第三方庫以及自定義模塊。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/254294.html