配置setup.py


    -   我們每天都在用 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: *****

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM