多版本Python共存,以及pip对应

本文介绍如何在同一系统中安装多个版本的Python并实现版本间切换,同时解决了使用pip安装第三方包的问题。此外,还提供了Python命令行Tab自动补全功能的设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


http://5404542.blog.51cto.com/5394542/1754606

多版本Python共存[支持使用pip安装包] 有时特殊需要会要用到高版本的Python, 但是系统自带的版本又是很多其他工具依赖的, 不能随意更新。 所以就会考虑安装另一个版本的python环境, 然后需要用到这个版本时就在脚本头部指明 #/usr/bin/env python2.7 这样。

## 下载要安装的 Python版本源码包(我用的是 2.7 版本)

wget ‘http://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2′

##标准的安装流程, 安装python2.7 到 /usr/local/python2.7 目录:

tar -xvf Python-2.7.tar.bz2
cd Python2.7
./configure –prefix=/usr/local/python2.7 &&  make && make install

## 建立一个 python2.7的链接, 方便调用

ln -sv /usr/local/python2.7/bin/python2.7 /usr/bin/python2.7

一般的需求到这一步即可使用 python2.7了。但是如果需要安装其他的包到python2.7, 在使用 easy_install、 pip 等包管理工具安装包时, 还是会装到系统自带版本python的目录。 在python2.7版本下也无法import安装的包。 以下是解决方法:

## 接下来安装一些需要的包环境(setuptools, pip)

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-20.3.1.tar.gz
tar -xvf setuptools-20.3.1.tar.gz
cd setuptools-20.3.1
python2.7 setup.py install –prefix=/usr/local/python2.7
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.1.tar.gz
tar -xvf pip-8.0.1.tar.gz
cd pip-8.0.1
python2.7 setup.py install –prefix=/usr/local/python2.7

## 创建一个 pip-2.7 的链接, 方便调用


ln -sv /usr/local/python2.7/bin/pip-2.7 /usr/bin/pip-2.7

之后使用 pip-2.7 命令安装的包就会自动装到 /usr/local/python2.7 对应目录下了。 这样安装的包不仅能import, 更重要的是不会出现不同版本的兼容性问题(有些包在不同版本python下是不同的)


python的tab自动补全

1
<br>
1
<br>

手动修改方法:1.进入用户宿主目录,建立 .pythonstartup文件

cd  ~  就是进入宿主目录,然后vim .pythonstartup(这样就创建了文件了,注意前面的点)2.  .pythonstartup内容如下:

##############################################

import sys

import readline

import rlcompleter

import atexit

import os

readline.parse_and_bind('tab: complete')

histfile = os.path.join(os.environ['HOME'], '.pythonhistory')

try:

    readline.read_history_file(histfile)

except IOError:

    pass

atexit.register(readline.write_history_file, histfile)

del os, histfile, readline, rlcompleter##############################################将这些内容手写到文件中,也可复制粘贴3.最后一步就是添加环境变量到.bashrc文件,执行以下命令即可:echo "export PYTHONSTARTUP=~/.pythonstartup" >> ~/.bashrc

到此就行了,python就能自动补全了

 

1
<br>


  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>>  import  sys
>>> sys.
sys.__class__(              sys.__subclasshook__(       sys.exitfunc(               sys.path_importer_cache
sys.__delattr__(            sys._clear_type_cache(      sys.flags                   sys.platform
sys.__dict__                sys._current_frames(        sys.float_info              sys.prefix
sys.__displayhook__(        sys._getframe(              sys.float_repr_style        sys.ps1
sys.__doc__                 sys._mercurial              sys.getcheckinterval(       sys.ps2
sys.__excepthook__(         sys._multiarch              sys.getdefaultencoding(     sys.py3kwarning
sys.__format__(             sys.api_version             sys.getdlopenflags(         sys.pydebug
sys.__getattribute__(       sys.argv                    sys.getfilesystemencoding(  sys.setcheckinterval(sys.__hash__(               sys.builtin_module_names    sys.getprofile(             sys.setdlopenflags(sys.__init__(               sys.byteorder               sys.getrecursionlimit(      sys.setprofile(sys.__name__                sys.call_tracing(           sys.getrefcount(            sys.setrecursionlimit(sys.__new__(                sys.callstats(              sys.getsizeof(              sys.settrace(sys.__package__             sys.copyright               sys.gettrace(               sys.stderr
sys.__reduce__(             sys.displayhook(            sys.hexversion              sys.stdin
sys.__reduce_ex__(          sys.dont_write_bytecode     sys.long_info               sys.stdout
sys.__repr__(               sys.exc_clear(              sys.maxint                  sys.subversion
sys.__setattr__(            sys.exc_info(               sys.maxsize                 sys.version
sys.__sizeof__(             sys.exc_type                sys.maxunicode              sys.version_info
sys.__stderr__              sys.excepthook(             sys.meta_path               sys.warnoptions
sys.__stdin__               sys.exec_prefix             sys.modules                 
sys.__stdout__              sys.executable              sys.path                    
sys.__str__(                sys.exit(                   sys.path_hooks

所有的功能都能很直观的看到,如果想了解具体用法,可以使用help命令来自己查看帮助信息。


### 实现 Python 多版本共存并分别配置各自的 pip 为了在同一台机器上安装和管理多个 Python 版本及其对应的 `pip`,可以遵循以下策略: #### 下载与安装不同版本的 Python 可以从官方网站下载所需的各个版本的 Python 安装包,并按照默认设置完成安装过程。每种版本会自动创建独立的文件夹来存储其核心组件及相关工具。 对于 Windows 用户,在安装过程中可以选择将特定版本的 Python 添加到系统的 PATH 环境变量中,但这不是必需的操作;因为后续可以通过指定路径调用不同的解释器实例[^2]。 #### 修改 Python 可执行文件名 为了避免命令冲突,建议重命名各版本下的 python.exe 文件为带有版本号的形式,比如 python37.exe 和 python38.exe 等。这样可以在命令行界面通过这些自定义名称直接启动对应版本的解释器而不会引起混淆。 #### 配置系统环境变量 PATH 如果希望能够在任意位置运行某个具体版本的 Python 解释器,则需将其所在目录加入到系统的 PATH 环境变量里。注意只添加一次即可,即指向包含已更名后的 exe 文件的那个文件夹。此操作使得用户能在终端输入如 `python37 script.py` 来明确指明要使用的 Python 版本。 #### 使用虚拟环境隔离项目依赖关系 除了上述全局性的调整外,还可以利用 virtualenv 或者 venv 模块为每一个开发项目建立专属的工作空间。这不仅有助于保持不同项目的库之间互不干扰,而且也方便切换所基于的基础 Python 发行版。当激活了一个新的虚拟环境中时,默认情况下它会继承宿主操作系统上的相同大版本号(例如 Python 3.x),但是也可以手动指定其他可用的小版本作为基础构建该虚拟环境[^1]。 #### 明确指定 Pip 的使用方式 针对已经正确设置了的不同版本 Python,可以直接采用如下形式来进行软件包管理: ```bash path_to_pythonX.Y -m pip install package_name ``` 这里 X.Y 表示具体的次要版本编号,例如 C:\Python39\python.exe 对应Python 3.9 。这种方法能够确保每次都是由目标 Python 解释器自带的 pip 执行安装任务,从而有效防止跨版本污染问题的发生[^3]。 ```python import sys print(sys.version) ``` 以上代码可以帮助确认当前正在使用的 Python 版本信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值