Python 第三方库安装、迁移与 shutil 模块详解
本文详细介绍 Python 第三方库的安装方式,包括使用 pip 命令及源码安装方法,并说明如何离线复制 site-packages 目录以迁移库文件。同时深入解析 Python 标准库 shutil 的功能,涵盖文件与目录的复制、移动、删除操作及元数据处理的注意事项,帮助开发者高效管理 Python 环境。
Python 第三方库安装、迁移与 shutil 模块详解
一、绪论
在 Python 开发过程中,第三方库的使用极为普遍,因此掌握其安装、复制与移动的方法至关重要。
第三方库安装方式
二、安装方式
第三方库的安装方式
1、使用 Python 自带的包管理器:通过 pip 命令进行自动安装。例如,执行命令:pip install xlwings
2、源码安装:从 PyPI 下载 tar 或 zip 格式的压缩包至本地进行安装。
2.1、pip 安装方式详解
在 Windows 环境下,首先打开 cmd 命令窗口。
进入 Python 安装路径下的 Scripts 目录。
执行 pip install 库名字 命令进行安装。
2.2、源码安装
下载库文件的压缩包,并将其解压。
在 cmd 命令窗口中进入解压后的文件夹,通常可以看到 setup.py 文件。
执行安装命令:python setup.py install
三、第三方包安装路径
第三方库的标准安装路径通常为:\Python37\Lib\site-packages
第三方包离线复制与移动
四、第三方包复制移动
在没有网络环境的情况下,将已安装包的电脑上的库文件拷贝到另一台未安装包的电脑上是一种有效的解决方案。
1、进入第三方库的安装路径文件夹,即 \site-packages 目录。
2、找到需要迁移的包并复制。需要注意的是,一个库通常包含两个相关文件或目录,务必同时复制。

3、将复制的包移动到另一台电脑的 \site-packages 目录中粘贴,即可直接使用。
shutil 模块文件操作详解
补充知识:Python 中使用 shutil 模块实现文件或目录的复制、删除与移动操作。
警告:即使是更高级的文件复制功能(如 shutil.copy()、shutil.copy2())也无法复制所有文件的元数据(metadata)。在 POSIX 平台上,这意味着文件的属主和用户组信息会丢失,ACLs 也会丢失。在 Mac OS 上,由于未使用 resource fork 和其他元数据,这意味着 resources 会丢失,且文件类型和创建者 ID 将保持原有状态。在 Windows 上,文件所有者、ACLs 以及交换数据流(alternate data streams)不会被复制。
文件夹和文件复制
shutil.copyfileobj(fsrc, fdst[, length])
将类文件对象 fsrc 的内容复制到类文件对象 fdst。可选整数参数 length 指定缓冲区大小。具体而言,若 length 的值为负数,复制操作不会将源数据分块进行复制。默认情况下,为了避免不可控制的内存消耗,数据会被分块存入 chunk 中。注意:如果 fsrc 对象的当前文件位置不为 0,则只有从当前文件位置到文件末尾的内容会被复制。
shutil.copyfile(src, dst)
将文件 src 的内容(不包含元数据)复制到文件 dst 中。dst 必须为一个完整的目标文件路径。如果要将文件复制到目标文件夹中,请查看 shutil.copy()。src 和 dst 不能为同一个文件,否则会报错。目标文件位置必须处于可写状态,否则会触发 IOError。如果 dst 已经存在,则会被覆盖。特别地,字符设备、块设备和管道不能使用此方法进行复制。使用字符串指定 src 和 dst 路径。
shutil.copymode(src, dst)
将 src 的文件权限位复制到 dst。文件的内容、属主和用户组不会受影响。使用字符串指定 src 和 dst 路径。
shutil.copystat(src, dst)
将文件 src 的文件权限位、最后访问时间(access time)、最后修改时间(modification time)以及标识 flags 复制到 dst。文件的内容、属主和用户组不会受影响。使用字符串指定 src 和 dst 路径。
shutil.copy(src, dst)
将文件 src 复制到 dst 文件或文件夹中。如果 dst 是文件夹,则会在文件夹中创建或覆盖一个文件,且该文件与 src 的文件名相同。文件权限位会被复制。使用字符串指定 src 和 dst 路径。
shutil.copy2(src, dst)
与 shutil.copy() 类似,另外会同时复制文件的元数据。实际上,该方法是 shutil.copy() 和 shutil.copystat() 的组合。该方法相当于 Unix 命令的 `cp -p`。
shutil.ignore_patterns(*patterns)
该工厂函数创建了一个可调用对象,该函数可用于 shutil.copytree() 的 ignore 参数值,以跳过正确匹配的文件和文件夹。更多参考下文。
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归复制整个 src 文件夹。目标文件夹名为 dst,不能已经存在;方法会自动创建 dst 根文件夹。文件夹权限和时间通过 shutil.copystat() 复制,单独的文件通过 shutil.copy2() 复制。如果 symlinks 为真,源文件夹中的符号链接将会被保留,但是原链接的元数据不会被复制。如果值为假或被省略,则链接文件指向文件的内容和元数据复制到新文件夹树中。如果指定了 ignore,那么它必须是可调用对象(callable),且作为 shutil.copytree() 的参数。参数包括文件夹本身及通过 os.listdir() 返回文件夹包含的内容。由于 shutil.copytree() 递归复制,因此 ignore 会在复制每个子文件夹的时候被调用。callable 必须返回一个由当前文件夹下的文件夹和文件所组成的队列(即第二个参数中 items 的子集);这些文件夹和文件在复制过程中会被忽略。可以使用 shutil.ignore_patterns() 创建 callable。
如果发生意外,shutil.Error() 返回错误原因。
移动和删除
shutil.rmtree(path[, ignore_errors[, onerror]])
删除整个目录树;path 必须指向一个文件夹,但不能是一个指向文件夹的符号链接。如果 ignore_errors 值为真,则删除失败时的信息将会被忽略。如果值为假或省略,那么这些错误将通过 onerror 指定的 handler 进行处理;如果 onerror 被省略,则会 raise 一个异常。
如果指定了 onerror,则必须是包含三个参数:function、path 和 excinfo 的可调用对象。第一个参数 function,该函数用于 raise 异常;该函数可以是 os.path.islink()、os.listdir()、os.remove()、os.rmdir()。第二个参数 path 为传递给第一个参数的路径。第三个参数 excinfo 为 sys.exc_info() 返回的异常信息。通过 onerror raise 的异常不会被捕捉。
shutil.move(src, dst)
将一个文件或文件夹从 src 移动到 dst。如果 dst 已存在且为文件夹,则 src 将会被移动到 dst 内。如果 dst 存在但不是文件夹,取决于 os.rename() 的语义,dst 可能会被覆盖。如果 dst 与 src 在相同的文件系统下,则使用 os.rename()。否则,将使用 shutil.copy2() 复制 src 到 dst 并删除源文件。
shutil.Error
该异常汇集文件操作时 raise 的异常。例如 shutil.copytree(),exception 参数是一个包含 3-tuple(srcname, dstname, exception)的列表。
以上关于 Python 安装、移动和复制第三方库的操作介绍完毕,希望能为大家提供参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













