gpt4 book ai didi

python - 如何让 pip 尊重 "CC"环境变量

转载 作者:太空狗 更新时间:2023-10-29 21:10:41 24 4
gpt4 key购买 nike

我在一个非常复杂的环境中工作,不同的机器可以访问不同的分布式文件系统。

  • 机器 A 可以访问文件系统 X 并用于在文件系统 Y 上安装软件。
  • 机器 B 可以访问文件系统 Y,但不能访问 X

我在机器 B 上工作,我发现自己经常使用 python。有时,我需要未预安装的包,因此我使用 pip install PKGXYZ --user 在本地安装它们。这通常效果很好,但有一个问题。

pip 使用的 python 包 distutils 及其 monkey-patched 衍生工具 setuptools 使用 distutils.sysconfig 功能来获取编译器版本、路径等。为此,他们使用用于安装 python 的内部 Makefile。虽然这通常是一个很好的策略,但它在我的具体设置中失败了,因为 python 内部 Makefile 中的路径指向文件系统 X,我无法访问它机器 B。因此,我发现自己使用了 pip--no-clean 选项,并破解了我想要安装的软件包的 setup.py像这样的片段:

import re
import sys
import os
cc = os.getenv("CC")
if not cc:
print("please set CC environment variable!")
exit(0)
from distutils.sysconfig import get_config_vars
for k,v in get_config_vars().iteritems():
try:
if "fsX" in v:
newv = re.sub(r'/fsX/[^ ]*/g[c+][c+]',cc,v)
get_config_vars()[k] = newv
except TypeError:
pass

这样我就可以使用 CC 环境变量将 pythons Makefile 中编译器路径的默认设置覆盖为在我的机器上工作的东西。

但是,这是一个丑陋的 hack。肯定有更好的方法来做到这一 pip ,让 pip 通过一些环境变量、配置文件或命令行选项使用一些不同的编译器。或者有吗?

最佳答案

听起来你在系统 B 上有编译器工具,所以一种选择是使用本地工具在你的系统上重新构建 python,然后改用它。

如果您只是在您的系统上为您的用户执行此操作,那么您甚至可以将它安装在您用户的主目录中以使其完全不受干扰,然后设置您的环境以使用它。或者使用 virtualenv。

您可以很容易地获取并构建新的 Python 安装。例如,对于 Linux 上的 python 3.5.1:

cd
mkdir src
mkdir -p local/python351
cd src
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
tar -xf Python*.tgz
cd Python-3.5.1
./configure --prefix ~/local/python351
make
make install

关于python - 如何让 pip 尊重 "CC"环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42747349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com