4. Python 绿色版及其依赖包的离线安装

前情提要:由于公司的开发机器属于内网机,无法联通外网,且又没有类似于 Nexus 仓库作为内网穿透的工具。以下所有操作都是基于 Window 10 的环境。

4.1. Python 绿色版的制作

制作流程大致分为:Python 和 pip 包的下载 -> 将 pip 安装入 Python 包中 -> 加入 pip 安装路径修复工具

  • Python 离线版的下载

    • 下载地址:https://www.python.org/ftp/python/3.7.9/

    • 下载内容:python-3.7.9-embed-amd64.zip

  • PiP 离线包的安装

    • 下载地址:https://pip.pypa.io/en/stable/installing/

    • 下载内容:在 Installing with get-pip.py 条目下的 get-pip.py 文件

    • 然后在 Python 离线版解压包下与 python.exe 同级目录下运行下方命令 .\python.exe .\get-pip.py,会生成两个文件夹。

  • 记事本打开 python37.\_pth,去除 import site 的注释;此时,我们通过运行 .\Scripts\pip -V 版本命令来确认是否正常。

    python37.zip
    .
    
    # Uncomment to run site.main() automatically
    import site
    

4.2. 将 Python 绿色版的包放在其他机器上运行时出现异常

Fatal error in launcher: Unable to create process using '"D:\MySoftWare\MyPython\python-3.7.9-embed-amd64\python.exe"  "C:\Users\qaz22\Downloads\MyPython\MyPython\python-3.7.9-embed-amd64\Scripts\pip.exe" -V': ???????????

这是因为 pip.exe 用绝对路径来找 python,现在换位置了,路径就失效了,通过重新安装可以很容易修复这个错误

需要注意,要找到与安装的 pip 包版本相同的修复文件。

下载地址:https://pypi.tuna.tsinghua.edu.cn/simple/pip/ 下载内容:pip-23.2.1-py3-none-any.whl 注意后缀,是 wheel 的文件

将 pip-23.2.1-py3-none-any.whl 文件放在 Python 根目录下,并运行以下命令:

    .\python -m pip install -U pip-23.2.1-py3-none-any.whl --force-reinstall

4.3. 下载 Python 离线依赖包,并在实际的开发机器中安装

为什么要在实际开发机器中安装,因为同 pip 的安装一样,如果实现在 Python 绿色版中安装开发依赖,那么也会由于其绝对路径的不同导致无法运行依赖程序,pip 能通过专用的程序进行离线重安装,但是其他的就不一定了,而且从时间成本上来说并不划算。

    pip download -d your_offline_packages sphinx

然后将下载好的依赖重新在新机器上安装

    .\python -m pip install --no-index --find-links=H:\your_offline_packages sphinx

当然,我们会发现,如果我们要初始化一个 Python 环境的时候,一个个依赖地下载和安装费事,可以通过下面的方法来下载和安装:

  • 首先,在项目中分析出所有依赖的库 :

        pip freeze > requirements.txt # 该方法仅可以使用在虚拟环境中,会将 python 解释器下的所有包都导出
    
  • 将所有包下载到 offLine 这个目录中

        pip download -r requirements.txt -d offLine
    
  • 将文件打包后放到离线服务器上,并进行解压缩

        pip install --no-index --find-links=d:\python3.6\temp -r requirements.txt