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