You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在pip命令行中指定自定义PyPI源并强制信任主机(无需配置文件或虚拟环境)

如何在pip命令行中指定自定义PyPI源并强制信任主机(无需配置文件或虚拟环境)

看起来你遇到的问题是因为ArcGIS自带的Python环境里的pip版本比较老——--trusted-host这个参数是在pip 1.5之后才引入的,旧版本pip根本不认识它。不用折腾配置文件或者虚拟环境,咱们直接在命令行里解决这个问题,分两种情况给你方案:

方案1:先升级当前环境的pip(推荐)

既然要在用户环境里操作,咱们先把pip升级到支持--trusted-host的版本,用--user参数安装到用户目录,不需要管理员权限。

先执行升级pip的命令(用sys.executable确保调用的是ArcGIS环境的pip,而不是系统其他的Python):

import subprocess
import sys
# 假设你的全局配置从这里引入
from your_settings_module import PYPI  

# 先升级pip
try:
    subprocess.check_call(
        [
            sys.executable, "-m", "pip", "install", "--user",
            "--trusted-host", PYPI["trusted_host"], "-i", PYPI["pypi_url"],
            "--upgrade", "pip"
        ], text=True
    )
except subprocess.CalledProcessError as e:
    print(f"升级pip失败:{e}")

升级完成后,你原来的安装命令就可以正常运行了,因为此时pip已经支持--trusted-host参数。

方案2:兼容旧版本pip(如果无法升级)

如果因为ArcGIS环境限制不能升级pip,那可以用旧版本pip支持的--allow-external--allow-unverified参数来绕过安全检查(注意:只在你完全信任这个自定义PyPI源的情况下使用)。

修改后的安装命令如下:

import subprocess
import sys
from your_settings_module import PYPI

try:
    resp = subprocess.check_call(
        [
            sys.executable, "-m", "pip", "install",
            "--user", "--allow-external", package_name,
            "--allow-unverified", package_name, "-i", PYPI["pypi_url"],
            package_name
        ], text=True
    )
except subprocess.CalledProcessError as e:
    print(f"安装包失败:{e}")

如果你的自定义源里的所有包都需要信任,也可以用通配符*来简化:

[
    sys.executable, "-m", "pip", "install",
    "--user", "--allow-external", "*",
    "--allow-unverified", "*", "-i", PYPI["pypi_url"],
    package_name
]

额外注意事项

  • 始终用sys.executable来调用pip:这样能确保你用的是当前ArcGIS环境的Python对应的pip,不会和系统里其他Python环境混淆。
  • --user参数:把包安装到用户个人目录,不需要管理员权限,完美适配终端用户的使用场景,不会影响系统级的Python环境。

备注:内容来源于stack exchange,提问作者auslander

火山引擎 最新活动