Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用自定义distlib运行Virtualenv?_Python_Dependencies_Virtualenv - Fatal编程技术网

Python 使用自定义distlib运行Virtualenv?

Python 使用自定义distlib运行Virtualenv?,python,dependencies,virtualenv,Python,Dependencies,Virtualenv,我想对Python的distlib进行一些开发,并在这个过程中通过virtualenv运行代码,其中distlib是一个依赖项 也就是说,不要在virtualenv中运行流程,而是使用自定义依赖项运行virtualenv的代码。我需要通过哪些步骤来实现这一目标 在我看来,正常的包管理(pip)在这里是不可能的。当然最简单的方法就是修改Python环境,搜索另一个目录,在它从stdlib获取修改后的distlib之前,它会在那里找到它?实现这一点的经典方法是设置PYTHONPATH环境变量。不需要

我想对Python的
distlib
进行一些开发,并在这个过程中通过
virtualenv
运行代码,其中distlib是一个依赖项

也就是说,不要在virtualenv中运行流程,而是使用自定义依赖项运行virtualenv的代码。我需要通过哪些步骤来实现这一目标


在我看来,正常的包管理(
pip
)在这里是不可能的。

当然最简单的方法就是修改Python环境,搜索另一个目录,在它从stdlib获取修改后的
distlib
之前,它会在那里找到它?实现这一点的经典方法是设置
PYTHONPATH
环境变量。不需要对Python安装进行任何更改

我终于明白了。谢谢你的回答,holdenweb,但是这个特殊的情况有点复杂

我首先将
virtualenv
pip
distlib
存储库克隆到
~/git repos/

由于virtualenv执行pip的方式,仅更改Python路径是不够的,还需要在
virtualenv/virtualenv.py

SCRIPT=textwrap.dedent(“”)
导入系统
进口蛋白胶
导入临时文件
导入操作系统
导入系统
sys.path.insert(0,'/home/harald/git repos/pip')
进口pip
...
Pip发行了distlib,所以为了运行我的自定义版本,我创建了一个从Pip的标准distlib到克隆源的符号链接:

~/git-repos/pip/pip/_vendor/distlib -> ~/git-repos/distlib/distlib/
然后在创建和激活环境之后,我也在终端中运行了这个

export PYTHONPATH=/home/harald/git repos/pip
在此之后,virtualenv使用我的自定义代码创建新的虚拟环境