Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 现有virtualenv是否可以正常升级?_Python_Virtualenv - Fatal编程技术网

Python 现有virtualenv是否可以正常升级?

Python 现有virtualenv是否可以正常升级?,python,virtualenv,Python,Virtualenv,我为Python2.5创建了一个virtualenv,并希望将其“升级”到Python2.6 以下是最初的设置方式: virtualenv --no-site-packages -p python2.5 myenv 我现在在同一目录下运行virtualenv进行升级: virtualenv --no-site-packages -p python2.6 myenv ... Not overwriting existing python script myenv/bin/python (you

我为Python2.5创建了一个virtualenv,并希望将其“升级”到Python2.6

以下是最初的设置方式:

virtualenv --no-site-packages -p python2.5 myenv
我现在在同一目录下运行virtualenv进行升级:

virtualenv --no-site-packages -p python2.6 myenv
...
Not overwriting existing python script myenv/bin/python (you must use myenv/bin/python2.6)
...
Overwriting myenv/bin/activate with new content

默认的python仍然是2.5,尽管我也可以指定2.6。有没有办法完全删除2.5,并将“bin/python”指向2.6

您应该使用
python2.6
创建一个新的
virtualenv
,然后在激活新的env后,使用它的
python2.6
和它的
easy\u install
安装您需要的任何站点软件包的新版本。请注意,
virtualenv
的路径名已硬连接到环境中的各种文件中,因此,当您准备切换到它时,更改启动脚本等以引用新的
virualenv
路径,或者非常小心地将其复制到旧目录中并修改其中的路径名。

您可以使用Python 2.6 virtualenv“revirtual”现有目录。不过,您必须重新安装所有已安装的模块。我通常有一个用于开发模块的虚拟目录,virtualenv与许多版本的Python使用同一目录,并且工作正常。:)

在CentOS上安装第二个Python

  • 下载python
  • 安装到diff-local

    configure --prefix=/opt/virtualenv/python 
    make && make install
    
  • 使用新python创建虚拟环境

    virtualenv /opt/virtualenv --python=/opt/python276/bin/python
    
    注意:如果需要,可以与其他用户一起完成

    chown pyuser -R /opt/virtualenv
    su - pyuser
    source /opt/virtualenv/bin/activate
    python -v
    
  • 创建虚拟环境:

    virtualenv /opt/virtualenv
    su - infograficos
    source bin/activate
    
  • 使用python 2.7安装pip(在virtualenv内部)

  • 如果您使用的是OSX,那么如果您想将Python升级到一个较小的升级版本(例如2.7.6到2.7.8),同时保持第三方库正常工作,请尝试

    它在安装了Django的5个不同虚拟环境中运行。

    在Python 3.3+支持中--升级标志

      --upgrade             Upgrade the environment directory to use this version
                            of Python, assuming Python has been upgraded in-place.
    
    用法:

    python -m venv --upgrade YOUR_VENV_DIRECTORY
    

    我刚刚在几个项目上将我的venv从Python 3.7.x升级到3.8,没有任何问题。

    谢谢!我尝试了你的方法,并看到“激活”脚本已更新,但旧版本仍然存在(请参阅修订后的问题)。你能提供一个例子吗?在用python 2.6重新运行virtualenv之前,你可以删除virtualenv中的bin/python可执行文件。好吧,你可以让它工作——但为什么?
    virtualenv
    的最大吸引力在于它可以轻松且廉价地创建可复制的python环境。为什么要弄脏一个,而不确定你已经修复了所有的东西,或者你可以再次复制它,或者当你可以制作一个新的干净的环境时,你正在干扰你的生产环境?@Ned:Virtualenv不制造可复制的环境,它制造孤立的环境。要复制它们,您还需要以相同的方式安装所有内容,virtualenv还不够。zc.buildout在那里更好。@Ned:我的观点是正确的;这是我工作的一个开发环境。我想把它保持在2.5,除非我绝对需要做2.6。这一需求产生了,因此我很好奇,您是否可以升级一个隔离的环境,以查看对代码的影响,而不必重建目录并将目录复制/粘贴到新的环境中。。。不幸的是,这似乎意味着如果我的系统
    python3
    指向3.6,我无法在我的venvIn 2021中创建指向3.7的get
    python3
    ,我想最好的办法就是制作一个新的venv并重新安装依赖项-可能其他答案(包括使用
    升级
    )可能不合适
    python -m venv --upgrade YOUR_VENV_DIRECTORY