【Python】pyenv的版本控制及global、shell、local命令區別

ringoo_ming發表於2019-05-23


 commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

   1.verson&versons

  • verson只顯示當前的python版本

  • versons顯示所有可用的python版本,當前使用的版本前帶*號

[python@192.168.240.77 RINGOO-1]: ~
127> pyenv version
system (set by /home/python/.pyenv/version)
[python@192.168.240.77 RINGOO-1]: ~
0> pyenv versions
* system (set by /home/python/.pyenv/version)
  3.5.3
  3.6.3


     2. global、shell、local之間的區別:

        2.1.  global 全域性設定

        如果使用此命令,可以看到所有受到pyenv控制的視窗都受到了影響, 所以儘可能不要用root使用者來安裝pyenv,否則會影響到之前的系統

[python@192.168.240.77 RINGOO-1]: ~
0> pyenv versions
* system (set by /home/python/.pyenv/version)
  3.5.3
  3.6.3
  
[python@192.168.240.77 RINGOO-1]: ~
0> pyenv global 3.5.3
[python@192.168.240.77 RINGOO-1]: ~
0> pyenv versions
  system (set by /home/python/.pyenv/version)
* 3.5.3
  3.6.3
  
[python@192.168.240.77 RINGOO-1]: ~
130> python -V
Python 3.5.3

        2. 2 shell 會話設定(隻影響當前的會話)

【會話1

[python@192.168.240.77 RINGOO-1]: ~
130> pyenv version
system (set by /home/python/.pyenv/version)
[python@192.168.240.77 RINGOO-1]: ~
0> pyenv shell 3.5.3
[python@192.168.240.77 RINGOO-1]: ~
0> pyenv versions
  system
* 3.5.3 (set by PYENV_VERSION environment variable)
  3.6.3
[python@192.168.240.77 RINGOO-1]: ~
0> python -V
Python 3.5.3

可以看到會話1的pyenv和python顯示版本均為3.5.3

【會話2

[python@RINGOO-1 3.5.3]$ pyenv versions
* system (set by /home/python/.pyenv/version)
  3.5.3
  3.6.3
  
[python@RINGOO-1 3.5.3]$ python -V
Python 2.6.6

可以看到新開啟的會話是Python 2.6.6,並沒有受到影響,所以shell只會影響到當前的會話,一旦這個會話結束,則一切失效

        2. 3 local 本地設定(隻影響所在資料夾)

新建檔案目錄test1/test2

mkdir -p test1/test2

並檢視當前test2目錄中的版本

[python@192.168.240.77 RINGOO-1]: ~
0> mkdir -p test1/test2
[python@192.168.240.77 RINGOO-1]: ~
0> ls
test1
[python@192.168.240.77 RINGOO-1]: ~
0> cd test1/test2
[python@192.168.240.77 RINGOO-1]: ~/test2
0> pyenv versions
* system
  3.5.3 (set by PYENV_VERSION environment variable)
  3.6.3
[python@192.168.240.77 RINGOO-1]: ~/test2
0> python -V
Python 2.6.6
[python@192.168.240.77 RINGOO-1]: ~/test2
0>

可以看到目前資料夾test2中的版本為:

  • pyenv system

  • python 2.6.6

使用local命令:

[python@192.168.240.77 RINGOO-1]: ~/test2
130> pyenv local 3.5.3
[python@192.168.240.77 RINGOO-1]: ~/test2
0> pyenv versions
  system
* 3.5.3 (set by PYENV_VERSION environment variable)
  3.6.3
[python@192.168.240.77 RINGOO-1]: ~/test2
0> python -V
Python 3.5.3

可以看到test2資料夾中的版本被改為了:

  • pyenv 3.5.3

  • python 3.5.3

而進入上一級目錄(其他目錄均可)

[python@192.168.240.77 RINGOO-1]: ~/test2
0> cd ..
[python@192.168.240.77 RINGOO-1]: ~/test1
0> pyenv versions
* system
  3.5.3 (set by PYENV_VERSION environment variable)
  3.6.3
[python@192.168.240.77 RINGOO-1]: ~/test1
0> python -V
Python 2.6.6

可以看到目前資料夾test1中的版本依舊為:

  • pyenv system

  • python 2.6.6

所以 local命令只會對當前的資料夾和其子目錄中的版本起作用 ,其他的目錄不起作用

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442725/viewspace-2645366/,如需轉載,請註明出處,否則將追究法律責任。

相關文章