- 我們每天都在用 pip install <package_name>。 - 默認會去官方的PyPI源下載,不過可以通過修改Linux或者macOX上的用戶家目錄下的文件 ~/.pip/pip.conf [global] timeout=600 index-url = http://pypi.doubanio.com/simple trusted-host = pypi.doubanio.com
- 我們每天都在用 pip install <package_name>。 - 默認會去官方的PyPI源下載,不過可以通過修改Linux或者macOX上的用戶家目錄下的文件 ~/.pip/pip.conf [global] timeout=600 index-url = http://pypi.doubanio.com/simple trusted-host = pypi.doubanio.com # setup.py (打包和安裝) - 打包的邏輯是指定那些文件需要被打到包里 - 安裝的邏輯是把包以及其依賴包安裝到當前python環境的site-pakcges中,並且把可執行文件放到對應的bin目錄下 只是執行了Python提供的setup函數而已 - packages 指明要打入的包 package=find_packages('Django企業開發實戰') # 也可以寫成 package=['config','config.migrations','blog.middleware'...] # 所有的目錄名 # 但是自己寫太麻煩,因此使用上面的寫法 - package_dir 指明上面的包都在哪個目錄下,如果在setup.py的同級目錄,則可以不用寫 - package_date 指明除了.py文件外,還需要打包那些文件到最終的安裝包里。 對應的值需要是字典格式,key標識要查找的目錄,value是list結構,表示要查找的具體文件,支持通配符的格式 如果key為空,表示要查找所有包。比如我們需要打包Javascript文件,其所在位置為 Django企業開發實戰/static/js/post_editor.js,因為開頭的Django企業開發實戰是包名,所以從static開始,需要每一級目錄 - include_package_data 和package_date功能一致,但依賴MANIFEST.in文件 實例配置: # 指定要加入的文件或者多個文件,以空格分開 include README.md # 遞歸查找Django企業開發實戰下面所有對應各式的文件 recursive-include Django企業開發實戰 *.css *.js *.jpg *.html *.md - install_requires 指明依賴版本,安裝項目時,先安裝依賴,也就是這一項配置 - extras_requires 額外的依賴, pip install 'Django企業開發實戰[ipython]' 這樣會同時安裝ipytho這個包 - scripts 指明要放到bin目錄下的可執行文件,這里把項目的manage.py放進去, 路徑為: Django企業開發實戰/manage.py 相對setup.py來說,然后可以通過manage.py runserver 啟動項目 - entry_points 入口點 console_scripts 用來生成一個可執行文件到bin目錄下。 名字叫: Django企業開發實戰_manage(執行此命令,就相當於執行了manage.py 中的main方法;前提是有main方法) - classifiers 說明項目的當前狀況 # 配置完上面 python setup.py sedit 或者 python setup.py bdist_wheel - sedit source distribution 源碼分發,打包之后是以.tar.gz結尾的 當用pip 安裝時,還需要build階段,也就是會執行 python setup.py install - bdist_wheel wheel格式(zip),以.whl結尾。 包含了文件和原數據,安裝時只需要移到對應的位置就可以了 可以通過unzip 來解壓 其優點: 1、可以更快地安裝純python的使用原生C擴展的包 2、避免安裝過程中執行任意代碼(避免執行setup.py) 3、C擴展的安裝不需要再Win macOX上編譯 4、給測試和持續集成提供更好地緩存 5、在暗黃期間創建pyc文件,確保這些文件跟當前使用的python解釋器匹配 6、在多平台上具有更加一致的安裝過程 - pythonwheels.com - 指明生成的包適用於python的那個版本 --universal 表明所有版本都可用 --python-tag py36 除了直接在命令行增加參數外,還可以通過文件的方式配置。 setup.cfg [bdist_wheel] python-tag = py36 #universal=0 # 僅限當前運行的python版本2或者3 #universal=1 # 2和3通用 # 最終通過 python setup.py sdist bdist_wheel upload -r internal 上傳到PyPI服務器 # 配置內部PyPI服務器 - 服務端 - 方法1 pip install pypiserver pypi-server -p 18080 -P /opt/mypypi/ .hatacess /opt/mypypi/packages -p 端口號 -P 認證文件 最后一個是上傳的包存放目錄 .hatacess 是使用Apache的一個工具生成的, yum install httpd-tools htpasswd -sc /opt/mypypi/ .hatacess user_name # 這一步會讓你輸入密碼。 - 方法2 使用devpi,功能更強大 - 客戶端 在用戶家目錄下增加.pypirc文件 [distutils] index-servers = internal [internal] repository: http://127.0.0.1:18080/ username: user_name password: *****