Anaconda环境中venv的--system-site-packages等效实现方法
在conda环境中调用系统安装的TensorRT(模拟venv的
--system-site-packages功能) 问题背景
用venv创建Python环境时,加上--system-site-packages参数就能导入通过apt安装的TensorRT;不加该参数则无法导入。现在需要在conda环境中实现同样的效果,让conda环境能够访问系统级安装的Python包。
TensorRT是通过NVIDIA官网下载后用apt命令安装的,直接运行系统python3可以正常导入使用,安装步骤如下:
$ cd ~ # 下载TensorRT $ wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.9.0/local_repo/nv-tensorrt-local-repo-ubuntu2204-10.9.0-cuda-12.8_1.0-1_amd64.deb ### 设置变量 $ os="ubuntu2204" $ tag="10.9.0-cuda-12.8" # 实际CUDA版本是12.6,指定12.8无问题 ### 添加TensorRT仓库 $ sudo dpkg -i nv-tensorrt-local-repo-${os}-${tag}_1.0-1_amd64.deb $ sudo cp /var/nv-tensorrt-local-repo-${os}-${tag}/*-keyring.gpg /usr/share/keyrings/ ### 更新包列表 $ sudo apt-get update ### 安装TensorRT $ sudo apt-get install tensorrt ### 安装运行时库 $ sudo apt-get install libnvinfer-lean10 libnvinfer-vc-plugin10 libnvinfer-dispatch10 libnvinfer-vc-plugin10 ### 安装Python版TensorRT $ sudo apt-get install python3-libnvinfer python3-libnvinfer-lean python3-libnvinfer-dispatch python3-libnvinfer-dev ### 安装TensorRT开发包 $ sudo apt-get install tensorrt tensorrt-dev tensorrt-libs ### 验证Python导入 $ python3 --version # Python 3.10.12 $ python3 >>> import tensorrt as trt >>> print(trt.__version__) # 10.9.0.34 >>> assert trt.Builder(trt.Logger()) >>> quit()
解决方案
conda没有完全对等的一键参数,但可以通过以下两种方式实现相同效果:
方式1:创建环境时直接继承系统site-packages
创建conda环境时,添加--system-site-packages参数(和venv的参数同名,作用一致):
conda create -n your_env_name python=3.10 --system-site-packages
激活环境后即可直接导入系统安装的TensorRT。
方式2:给已存在的conda环境添加系统包路径
如果已经创建了conda环境,可以手动将系统的site-packages目录添加到环境的Python路径中:
- 先获取系统Python的site-packages路径:
python3 -c "import site; print(site.getsitepackages())"
通常输出类似['/usr/lib/python3/dist-packages', '/usr/local/lib/python3.10/dist-packages']
- 激活目标conda环境:
conda activate your_env_name
- 在conda环境的site-packages目录下创建
.pth文件,写入系统site-packages路径:
# 获取conda环境的site-packages路径 CONDA_SITE=$(python -c "import site; print(site.getsitepackages()[0])") # 写入系统路径到.pth文件 echo "/usr/lib/python3/dist-packages" >> ${CONDA_SITE}/system-packages.pth echo "/usr/local/lib/python3.10/dist-packages" >> ${CONDA_SITE}/system-packages.pth
- 验证效果:
import tensorrt as trt print(trt.__version__) # 应输出10.9.0.34
内容的提问来源于stack exchange,提问作者Shinobu HUYUGIRI
相关产品推荐
相关产品推荐

