配置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