Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 382|回复: 0

Debian python 建立虚拟环境及安装库的安全性问题(venv)

[复制链接]

254

主题

363

帖子

2431

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2431
发表于 2024-12-30 14:09:26 | 显示全部楼层 |阅读模式
见/usr/share/doc/python3.x/README.venv
与其建立一个命令:
pip install --user me someprogramme
不如建立如下环境:
mkdir -p ~/.venvs
python3 -m venv ~/.venvs/me
~/.venvs/me/bin/python -m pip install me someprogramme

注意如果需要,单独的运行环境也能访问系统的python模块,此时要使用"--system-site-packages"标志,加在python3 -m venv someone‘sPath后面:
--system-site-packages 的作用:

默认情况下,当您创建一个新的虚拟环境时,它不会包含系统级的 site-packages 目录中的任何包。这意味着虚拟环境是一个干净的环境,您需要在其中手动安装所需的所有包。

然而,如果您在创建虚拟环境时添加了 --system-site-packages 参数,那么虚拟环境将会包含系统级的 site-packages 目录中的所有包。这样做有几个目的:

节省时间和带宽:如果您知道某些包在系统级已经安装,并且您不想在虚拟环境中重新安装它们,那么使用 --system-site-packages 可以节省时间和带宽。

依赖共享:在某些情况下,您可能希望虚拟环境能够访问系统级的某些包,以便与现有系统级的应用程序或库进行交互。

兼容性考虑:某些包可能依赖于系统级的特定版本的包,或者可能无法与虚拟环境中的某些包版本兼容。在这种情况下,使用 --system-site-packages 可以帮助解决兼容性问题。


建立包含系统级site-packages目录中的所有包的虚拟环境:

  1. python -m venv --system-site-packages myenv
复制代码

使用python:

  1. /home/me/.venvs/me/bin/python  /somepath/somepythonscript.py
复制代码
注意事项
安全性:虽然 --system-site-packages 提供了便利,但它也可能引入安全风险。如果系统级的 site-packages 目录中包含恶意包或已被篡改的包,那么这些包也可能在虚拟环境中可用。因此,在使用此选项时,请确保您信任系统级的 Python 环境。

环境一致性:在某些情况下,为了确保环境的一致性和可重复性,您可能不希望使用 --system-site-packages。相反,您应该手动在虚拟环境中安装所有必需的包,并将这些包的版本记录在项目的依赖管理文件(如 requirements.txt)中。

综上所述,--system-site-packages 参数在创建 Python 虚拟环境时提供了一个有用的选项,允许虚拟环境访问系统级的 site-packages 目录。然而,在使用此选项时,请务必权衡其利弊,并根据您的具体需求做出决策。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-4-16 04:25 , Processed in 0.013791 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表