python 3.6 的 venv 模塊


今天,在在使用 pycharm 的使用,進行創建 python的時候,發現使用默認的創建的選項使用的python 3環境 。而我系統默認的python環境是 python 2.7 環境;這就引起了我的興趣。

我打開pycharm 的終端,發現:

前面 有個 venv 參數,通過 調研了一番我發現:python 的 venv 模塊可以創建一個獨立的虛擬的python運行環境,這樣就和系統的python獨立開來了。而我使用fedora 28的系統,默認安裝了python2.7 和 python3.6 兩種python環境。

我們使用 python 內置的文檔查看,venv 相關,其描述為:

Help on package venv:

NAME
    venv - Virtual environment (venv) package for Python. Based on PEP 405.

我們使用python3 查看 venv 模塊的使用方法:

env pwd
/home/xuyaowen/Desktop/workplace/envenv python3 -m venv -h
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
            [--upgrade] [--without-pip] [--prompt PROMPT]
            ENV_DIR [ENV_DIR ...]

Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR               A directory to create the environment in.

optional arguments:
  -h, --help            show this help message and exit
  --system-site-packages
                        Give the virtual environment access to the system
                        site-packages dir.
  --symlinks            Try to use symlinks rather than copies, when symlinks
                        are not the default for the platform.
  --copies              Try to use copies rather than symlinks, even when
                        symlinks are the default for the platform.
  --clear               Delete the contents of the environment directory if it
                        already exists, before environment creation.
  --upgrade             Upgrade the environment directory to use this version
                        of Python, assuming Python has been upgraded in-place.
  --without-pip         Skips installing or upgrading pip in the virtual
                        environment (pip is bootstrapped by default)
  --prompt PROMPT       Provides an alternative prompt prefix for this
                        environment.

Once an environment has been created, you may wish to activate it, e.g. by
sourcing an activate script in its bin directory.

通過上面的介紹,我們大致知道 venv 的模塊使用方法:

首先我們創建虛擬環境:

➜  venvtest pwd
/home/xuyaowen/Desktop/workplace/venvtest
➜  venvtest python3 -m venv .

我們查看創建的結果:

➜  venvtest ls
bin  include  lib  lib64  pyvenv.cfg
➜  venvtest ll *
lrwxrwxrwx. 1 xuyaowen xuyaowen    3 Jul 27 11:44 lib64 -> lib
-rw-r--r--. 1 xuyaowen xuyaowen   69 Jul 27 11:44 pyvenv.cfg

bin:
total 32K
-rw-r--r--. 1 xuyaowen xuyaowen 2.2K Jul 27 11:44 activate
-rw-r--r--. 1 xuyaowen xuyaowen 1.3K Jul 27 11:44 activate.csh
-rw-r--r--. 1 xuyaowen xuyaowen 2.4K Jul 27 11:44 activate.fish
-rwxr-xr-x. 1 xuyaowen xuyaowen  271 Jul 27 11:44 easy_install
-rwxr-xr-x. 1 xuyaowen xuyaowen  271 Jul 27 11:44 easy_install-3.6
-rwxr-xr-x. 1 xuyaowen xuyaowen  243 Jul 27 11:44 pip
-rwxr-xr-x. 1 xuyaowen xuyaowen  243 Jul 27 11:44 pip3
-rwxr-xr-x. 1 xuyaowen xuyaowen  243 Jul 27 11:44 pip3.6
lrwxrwxrwx. 1 xuyaowen xuyaowen    7 Jul 27 11:44 python -> python3
lrwxrwxrwx. 1 xuyaowen xuyaowen   16 Jul 27 11:44 python3 -> /usr/bin/python3

include:
total 0

lib:
total 4.0K
drwxr-xr-x. 3 xuyaowen xuyaowen 4.0K Jul 27 11:44 python3.6

我們當前 產生了很多虛擬環境相關的文件:

../venvtest
├── bin
│   ├── activate       用來激活虛擬環境
│   ├── activate.csh
│   ├── activate.fish
│   ├── easy_install
│   ├── easy_install-3.6
│   ├── pip
│   ├── pip3
│   ├── pip3.6
│   ├── python -> python3
│   └── python3 -> /usr/bin/python3
├── include
├── lib
│   └── python3.6
│       └── site-packages
├── lib64 -> lib
└── pyvenv.cfg

默認情況下,是創建 一個全新的python執行環境,並包含pip命令,當你激活虛擬環境后,我們可以 使用 pip 安裝我們需要的第三方包並且新安裝的包不在系統中出現。下面我們進行激活環境:

➜  venvtest source ./bin/activate
(venvtest) ➜  venvtest 

前面出現 虛擬環境的名稱,說明我們環境激活成功,這時候我們再進行運行python :

(venvtest) ➜  venvtest python -V
Python 3.6.5

可以發現,此時我們的python的環境為 3.6.5, 虛擬環境運行成功。當然你也可以在創建虛擬環境的時候使用 --system-site-packages 選項,來讓虛擬環境使用系統的已經安裝的包。

我們進一步閱讀 activate 腳本:

(venvtest) ➜  bin cat activate | head -n 2
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

你會發現,它前兩行說明,你只能使用 source 命令來激活它。

好了,到這里大致會使用 venv 模塊了。希望你使用愉快。

保持更新,轉載請注明出處。




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM