Python_打包分发-源码安装_wheel

发布时间 2023-11-22 15:34:14作者: 辰令

python 打包

打包,就是将源代码进一步封装,并且将所有的项目部署工作都事先安排好,
这样使用者拿到后即装即用,不用再操心如何部署的问题

Python打包

包分发的始祖:distutils
  distutils 是 Python 的一个标准库,从命名上很容易看出它是一个分发(distribute)工具(utlis),
  它是 Python 官方开发的一个分发打包工具,所有后续的打包工具,全部都是基于它进行开发的。
  distutils 的精髓在于编写 setup.py,它是模块分发与安装的指导文件

分发工具升级:setuptools
   setuptools 是 distutils 增强版,不包括在标准库
   
  根目录下创建一个 setup.py 文件。这个文件将包含我们用于打包的配置信息 
    install_requires = ["requests"]: 需要安装的依赖包。我们可以首先生成 requirements.txt 文件
	ext_modules参数用于构建 C 和 C++ 扩展扩展包

打包

通过pip安装
cd pytorch3d
pip install -e .



通过setup.py安装
cd pytorch3d
python3 setup.py install		

打包示例

  安装命令会将当前的 Python 应用安装到当前 Python 环境的 site-packages 目录下,
    这样其他程序就可以像导入标准库一样导入该应用的代码了。  
    
  python setup.py install
使用 develop 开发方式安装的话,应用代码不会真的被拷贝到本地 Python 环境的 site-packages 目录下,
    而是在 site-packages 目录里创建一个指向当前应用位置的链接。这样如果当前位置的源码被改动,就会马上反映到 site-packages 里。
  python setup.py develop
   等价于 pip install -e .

打包示例

pip install -e . 的含义是:在当前目录下安装一个包,并创建一个软连接引用该包(而不是将包复制到 site-packages 目录下)。
这个软连接是一个指向包代码的符号链接,它可以使包的修改直接反映到当前目录下的项目中,从而方便开发和调试。  
  install 是 pip 命令的一个子命令,用于安装 Python 包;
   -e 表示使用可编辑模式安装包,即把包安装到当前目录,并且可以通过编辑包代码实时调试;
   . 表示安装当前目录下的包	  

打包

 下来的包后缀就是.whl文件,加载时也是采用pip install 本地路径/包名.whl,这样pip的加
 .wheel文件(缩写为.whl)是Python软件包的一种新格式,也是.dist-info和.egg-info两种格式的继承和统一
 
 可以利用setup.py生成wheel文件
   python setup.py bdist_wheel
 
 生成的wheel文件在ad-master/dist目录下
 之后在新的虚拟环境使用该包,只需要
    pip install ad-2.0.11.dev0-cp37-cp37m-win_amd64.whl

依赖项

 pip show 命令来查看请求包的详细信息,包括依赖包。 查看requests的依赖包
  pip show requests

源码的依赖:
 pip freeze > requirements.txt
    pip freeze命令会将所有安装的包及其版本信息输出到控制台。通过重定向符号>将输出结果写入到文件中,就能够生成requirements.txt文件。
	但是,该文件中可能包含一些不必要的依赖项,如系统自带的库、测试工具等	 

 pip install -r requirements.txt 
 
 
 项目中一般既要有 requriements.txt(依赖包列表) 也有 setup.py(安装脚本,也包含依赖包列表),
 requirements.txt是用来列出所有依赖包
 setup.py 中install_requires是安装依赖,安装该包时会自动从Pypi上搜索并安装依赖包
 install_requires(即setup.py)定义了单个项目的依赖关系,而requirements.txt通常用于定义完整Python环境