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

2023-01-31 05:01:24 python 版本 共存

多版本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.进入用户宿主目录,建立 .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就能自动补全了

 



  

>>> 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命令来自己查看帮助信息。



相关文章