最近需要定制一个纯净的Python运行环境+程序包,目标是:通过脚本一键运行,定制的python.exe,定制的软件安装包,与系统环境里的python隔离。
假设python安装目录为:python3.12.8
从官网上直接下载解压可用的绿色版,发现无法正常使用PiP
官网下载Python
https://www.python.org/downloads/
一:解决 pip 命令失败问题
下载保存:get-pip.py
运行命令:进入get-pip.py所在目录,运行:python.exe get-pip.py
已安装pip、pip3等命令,但pip还是不可用。
在执行命令:get-pip.py 时在\Lib\site-packages目录生成了几个包文件。
将其添加到python3.12.x根目录python312.zip压缩包中,pip即可正常使用。
二:安装包
python3.12.8/python.exe -m pip install -r requirements.txt
虽然安装包都被安装在“python3.12.8/Lib/site-packages”下面,但是不能正常引用,这就需要自定义安装包位置了。
三:设置site和sys.path
在运行入口文件,一般是main.py最前面设置如下,再引用安装包就正常了。
import os
import sys
import site
current_path = os.path.abspath('.')
os.environ['ENABLE_USER_SITE'] = 'True'
os.environ['USER_SITE'] = current_path + '/python3.12.8/Lib/site-packages' # 替换为你的路径
os.environ['USER_BASE'] = current_path + '/python3.12.8/Scripts' # 替换为你的路径
site.main()
# 检查程序当前目录是否在 sys.path 中,如果不是则添加:
if current_path not in sys.path:
# 将新项目路径添加到 sys.path 的末尾
sys.path.append(current_path)
直接用定制python.exe启动即可
注意:
修改sys.path
通常不是最佳做法,因为它可能会导致命名空间冲突,尤其是当添加的路径中包含与现有模块同名的模块时。更好的做法是使用包(package)和相对导入,或者使用site-packages
目录来安装你的模块。