python版本管理工具pyenv和包管理工具pipenv


一、pyenv版本管理工具

pyenv是一個python版本管理工具,可以實現輕松切換多個python版本

它可根據每個用戶更改全局python版本,也可以為每個項目指定python版本,還可以管理virtualenv虛擬環境,可以自己創建virtualenv或者通過pyenv-virtualenv來自動化創建虛擬環境

pyenv通過PATH環境變量來匹配切換python或者pip的工作目錄,pyenv通過讀取工作環境來指定使用哪個python版本,如在當前會話中查找PYENV_VERSION環境變量,可以通過pyenv shell 來設置shell會話變量,在當前目錄中的特定應用程序文件.python-version,可以使用pyenv local來設置.python-version,它會搜索每個父目錄直到根目錄;全局$(pyenv root)/version文件可以通過pyenv global命令修改,通過讀取這些環境變量或文件來指定運行的python版本,也可以多個版本並行,更多詳細內容請去github上pyenv項目

1、linux下安裝pyenv(centOS)

安裝前需檢查是否有以下安裝依賴包:

yum install git -y
yum -y install gcc make patch gdbm-devle openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel

創建python用戶:
useradd python
切換到pyhton 用戶后按下面的方式安裝:

(1)使用下面的腳本自動安裝
1)通過腳本自動安裝

$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

2)添加環境變量到.bashrc

export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

3)更新pyenv版本

$ pyenv update

#檢查安裝情況

$ pyenv -v
pyenv 1.2.4

(2)離線安裝
直接獲取文件,使用git鏈接clone到本地目錄

#useradd python
#su - python
$mkdir .pyenv
$su - root   #先切換回root給python用戶設置sudo權限
#echo "python          ALL=(ALL)       NOPASSWD: ALL" >>/etc/sudoers
#tail -1 /etc/sudoers
#su - python  #切換回python用戶
$sudo git clone https://github.com/pyenv/pyenv.git ~/.pyenv   #pyenv主程序
$sudo git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv   #管理virtualenv插件
$sudo git clone https://github.com/pyenv/pyenv-which-ext.git ~/.pyenv/plugins/pyenv-which-ext   #整個pyenv和系統命令插件
$sudo git clone https://github.com/pyenv/pyenv-update.git ~/.pyenv/plugins/pyenv-update  #pyenv更新插件
$sudo git clone https://github.com/pyenv/pyenv-doctor.git ~/.pyenv/plugins/pyenv-doctor   #檢查開發工具插件
#$sudo git clone https://github.com/pyenv/pyenv-ccache.git ~/.pyenv/plugins/pyenv-ccache  #ccache插件,必須安裝ccache

配置環境變量:
$vim .bash_profile
export PYENV_ROOT=~/.pyenv
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
$source .bash_profile $pyenv -v pyenv 1.2.4-8-g43235c2

2、使用pyenv

$pyenv -h
Usage: pyenv <command> [<args>]

列出所有可用的pyenv命令:
   local      設置或顯示本地應用程序特定的Python版本
   global      設置或顯示全局Python版本
   shell      設置或顯示特定於shell的Python版本
   install     使用Pyenv構建安裝Python版本
   uninstall   卸載特定的Python版本
   rehash      重置pyenv shims(安裝可執行文件后運行此操作)
   version     顯示當前Python版本及其來源
   versions   列出PyEnv可用的所有Python版本
   which       顯示可執行文件的完整路徑
   whence     列出包含給定可執行文件的所有Python版本

#安裝python版本

$ pyenv help install 查看安裝幫助
$ pyenv install -l 顯示可安裝版本
$ pyenv install 3.5.4 安裝3.5.4版本python

#可以使用緩存方法安裝
#在.pyenv目錄下,新建cache目錄,存放下載好的版本文件,可以自己手動下載好后放進去,省了遠程下載時間,然后安裝即可。
安裝完成后更新數據庫:
$pyenv rehash
#使用pyenv的local,global,shell,分別指定本地,全局,當前會話的python版本

$ pyenv versions #查看已安裝的版本,*為系統自帶的正在使用的python
* system (set by /home/python/.pyenv/version)
3.5.4
$ pyenv local 3.5.4 #設置本地環境python版本
$ pyenv versions
system
* 3.5.4 (set by /home/python/.python-version)
$ pyenv local
3.5.4
$ pyenv local system
$ pyenv local
system

#使用插件virtualenv創建虛擬環境

$ pyenv virtualenv 3.5.4 zhang_python354  #使用python3.5.4創建virtualenv

$ pyenv versions
* system (set by /home/python/.python-version)
3.5.4
3.5.4/envs/zhang_python354
zhang_python354
$ cd .pyenv/versions/
$ ls #真實目錄在.pyenv/versions下
3.5.4 zhang_python354 
$ mkdir project_app 創建程序目錄
$ cd project_app
$ pyenv local zhang_python354 #指定目錄下的python版本
(zhang_python354) [python@python project_app]$ pyenv local
zhang_python354
(zhang_python354) [python@python project_app]$ cd
[python@python ~]$ pyenv local
system
[python@python ~]$ cd project_app/
(zhang_python354) [python@python project_app]$

#pip通用配置

$ mkdir ~/.pip
$ vim ~/.pip/pip.conf

[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com

#查看pip使用的環境:
(zhang_python354) [python@python zhang_python354]$ pip -V
#安裝ipython
(zhang_python354) [python@python zhang_python354]$ pip install ipython #在虛擬環境中安裝ipython,這個模塊只在虛擬環境中。

#安裝Jupyter,它是一個輕量級的web界面的python開發測試環境

$ pip install jupyter
$ jupyter notebook help #查看幫助
#修改jupyter密碼
$ jupyter notebook password
#啟動jupyter
$ jupyter notebook --ip=0.0.0.0 --no-browser
......
http://0.0.0.0:8888/?token=ab2a1fad679c1de14dd6517b3aeb30fc6a440199031f47cd
#通過瀏覽器訪問jupyter,開始編程之旅
http://ip:8888 #輸入密碼登陸

#導出當前虛擬環境的包
$ pip freeze >~/zhangpackages.txt
#可以將此環境中用到的包導入到其他環境,但python版本要相同
$pip install -r ~/zhangpackages.txt

二、pipenv包管理工具

pipenv是python官方推薦的python打包工具,它會自動為您的項目創建和管理virtualenv,並在安裝或卸載軟件包時從您的pipfile中添加或刪除軟件包,它會為你的項目創建一個非常重要的pipfile.lock文件,用於生成確定性構建的python包版本號及包依賴關系。

它將Pipfile,pip和virtualenv整合到一個命令中。

pipenv的特性:

(1)它將pip和virtualenv合並在一起使用

(2)之前管理的requirements.txt文件記錄的包信息不夠詳細在遷移導入是會出現問題,pipenv中使用pipfile和pipfile.lock來詳細記錄包信息

(3)可以通過pipenv graph詳細的查看包的依賴關系

(4)通過加載.env文件可以簡化開發工作流程

pipenv它會在你安裝了pyenv的情況下自動安裝python版本,它會自動遞歸查找項目中的pipfile文件,如果不存在則創建,virtualenv是自動創建的,pipenv主要命令有install ,uninstal ,lock ,graph顯示已安裝的包的依賴關系,shell將激活virtualenv生成一個shell,run從virtualenv環境運行命令,check檢查安全漏洞

1、pipenv的安裝

在安裝之前需要安裝配置好python和pip,參考python安裝

使用pip安裝pipenv:

$pip3 install pipenv
#或者指定用戶安裝
$pip3 install --user pipenv
$ln -sv /usr/local/python356/bin/pipenv /usr/bin/pipenv

pipenv原始安裝:如在沒有安裝pip的情況下,可以使用這種方法安裝

$ curl https://raw.githubusercontent.com/kennethreitz/pipenv/master/get-pipenv.py | python3
$ln -sv /usr/local/python356/bin/pipenv /usr/bin/pipenv

2、pipenv的基本用法

pipenv:
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

選項:
  --where          顯示項目路徑
  --venv           輸出virtualenv信息
  --py             輸出Python解釋器信息
  --envs           輸出環境變量選項
  --rm             移除virtualenv
  --bare           最小輸出
  --completion     輸出完成
  --man            顯示聯機幫助頁
  --three / --two  創建python虛擬環境,python3用three,2用two
  --python TEXT    指定python版本創建virtualenv項目
  --site-packages  啟用虛擬環境下的包
  --version        顯示版本
  -h, --help       顯示幫助信息


使用示例:
   使用python 3.6創建一個新項目:
   $ pipenv --python 3.6   
   
   安裝項目並安裝dev依賴關系包:
   $ pipenv install --dev

   創建一個包含預發布的鎖文件:
   $ pipenv lock --pre

   顯示鎖安裝包的依賴:
   $ pipenv graph

   檢查已安裝的依賴關系是否存在安全漏洞:
   $ pipenv check

   將本地setup.py安裝到您的虛擬環境中pipfile:
   $ pipenv install -e .

   使用較低級別的pip命令:
   $ pipenv run pip freeze
   
   生成一個鎖文件:
   $pipenv lock

   安裝所有開發依賴包:
   $pipenv install --dev

   卸載所有內容:
   $pipenv uninstall --all

   激活虛擬環境:
   $pipenv shell  
   
     
命令:
  check      檢查安裝的依賴關系是滿足Pipfile中提供的安全漏洞和PEP 508標記要求
        --three,--two  創建virtualenv時使用的python3/2
        --python <python> 制定哪個版本的virtualenv應該使用
        --system    使用系統python
        --unused <unused> 給定代碼路徑,顯示可能未使用的依賴關系
        
  clean      卸載未在Pipfile.lock中指定的所有軟件包
        --v,--verbose  顯示詳細信息
        --dry-run  只顯示不需要的包
        
  graph      顯示當前安裝的依賴關系圖信息
        --json  輸出JSON
        --json-tree  數結構輸出json
        --reverse  反向依賴關系圖
  install    安裝軟件包
        --d,--dev  在[dev-ackages]中安裝軟件包
    --two- 使用系統python2鏈接在virtualenv中執行安裝。
    --three- 使用系統python3鏈接在virtualenv中執行安裝。
    --python - 使用提供的Python解釋器在virtualenv中執行安裝。
        --pypi-mirror <pypi_mirror> 指定一個pypi鏡像來安裝
        --system  使用系統pip命令而不是virtualenv中的命令。
        -r,--requirements <requirements>  導入一個reqquirements.txt文件
        -c,--code <code>  從代碼庫導入
        -v,--verbose   詳細模式
        --ignore-pipfile- 忽略Pipfile並從中安裝Pipfile.lock。
        --skip-lock 忽略Pipfile.lock並從中安裝Pipfile並不寫入Pipfile.lock的變化
        --deploy  如果pipfile.lock過時或python版本錯誤則終止
        --pre    允許預發布
        --keep-outdated   防止pipfile.lock中過時的依賴項
        --selective-upgrage  更新制定的包
        
  lock      生成Pipfile.lock鎖
        -r,--requirements   生成與requirements.txt兼容的包文件
        -d,--dev   生成與requirements.txt兼容的開發依賴項
        --clear  清除依賴關系緩存
        --keep-outdated  防止pipfile.lock中更新過時的依賴項
        
  open      在編輯器中查看給定的模塊 
  run       將從virtualenv運行給定的命令,並轉發任何參數
  shell     激活virtualenv虛擬環境生成一個shell環境 
  sync      安裝在Pipfile.lock中指定的所有軟件包 
  
  uninstall 取消安裝提供的軟件包並將其從Pipfile中刪除
        --all - 該參數將清除虛擬環境中的所有文件,但不改變Pip文件。
        --all-dev - 該參數將從虛擬環境中刪除所有開發包,並將其從Pipfile中刪除。
 
  update     運行鎖定,然后同步
        --outdated  列出過期的依賴關系

3、pipenv工作流程

#創建項目目錄
#mkdir project_01 
#cd project_01
#生成virtualenv並安裝redis,將在項目目錄下創建Pipfile文件
#pipenv install redis
Creating a virtualenv for this project…
Using /usr/local/python365/bin/python3.6 (3.6.5) to create virtualenv…
⠋Already using interpreter /usr/local/python365/bin/python3.6
Using base prefix '/usr/local/python365'
New python executable in /root/.local/share/virtualenvs/project_01-AJQOUQOt/bin/python3.6
Also creating executable in /root/.local/share/virtualenvs/project_01-AJQOUQOt/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /root/.local/share/virtualenvs/project_01-AJQOUQOt
Creating a Pipfile for this project…                              Installing redis…
Collecting redis
  Using cached https://files.pythonhosted.org/packages/3b/f6/7a/redis-2.10.6-py2.py3-none-any.whl
Installing collected packages: redis
Successfully installed redis-2.10.6

Adding redis to Pipfile's [packages]…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (ab7b2e)!
Installing dependencies from Pipfile.lock (ab7b2e)…
To activate this project's virtualenv, run the following:
 $ pipenv shell
#激活virtualenv
#pipenv shell
Spawning environment shell (/bin/bash). Use 'exit' to leave.
[root@pypc@project_01@20:54@1]#. /root/.local/share/virtualenvs/project_01-AJQOUQOt/bin/activate
#查看項目目錄
#pipenv --where
/project_01
#查看python版本
#pipenv --py
/root/.local/share/virtualenvs/project_01-AJQOUQOt/bin/python
#查看virtualenv路徑
#pipenv --venv
/root/.local/share/virtualenvs/project_01-AJQOUQOt
#查看包依賴關系圖
#pipenv graph
redis==2.10.6
#exit 退出virtualenv

4、pipenv使用

#創建項目虛擬環境
$pipenv install
#指定python版本創建虛擬環境
$pipenv --two
$pipenv --three
$pipenv --python 3.6.5

#升級所有包
$pipenv update

#升級某一個包,如:redis
$pipenv update redis

#顯示項目路徑
$pipenv --where  

#顯示virtualenv路徑
$pipenv --venv  

#顯示python虛擬解釋器
$pipenv --py  

#激活虛擬環境
$pipenv shell   

#安裝requests模塊
$pipenv install requests 

#查看目前安裝的庫及依賴關系  
$pipenv graph 

#檢查包的安全性 
#pipenv check  

#激活虛擬環境並運行shell命令
$pipenv run which python

#從文件導入包
$pipenv install -r path/to/requirements.txt

#凍結軟件包和版本依賴關系,生成Pipfile.lock文件
$pipenv lock

#安裝開發包
$pipenv install --dev pytest

#使用系統上的python自帶的包組件
$pipenv --three --site-packages

5、Pipfile文件說明

$cat Pipfile

[[source]]
url = "https://pypi.org/simple"  #用來配置安裝包的源,可以更換國內的源,注意在更好沒有https的源時會不信任站點將verify_ssl設置為false
verify_ssl = true
name = "pypi"

[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
uerify_ssl = true
name = 'tuna'

[packages]
requests = {version = "*", index = 'tuna''} #為不同的包指定不同的安裝源
maya = {version = "*", index = "pypi"
[packages]
#安裝的包及版本關系顯示 redis = "*" [dev-packages] #安裝的開發包 [requires] #指定項目運行的python版本,你可以在此指定一個系統上沒有的版本,在創建虛擬環境是pipenv會通過pyenv下載指定版本的python python_version = "3.6"

6、pipenv環境變量說明

Pipenv帶有一些可以通過shell環境變量啟用的選項。要激活它們,只需在shell中創建變量,pipenv將檢測它

 PIPENV_VENV_IN_PROJECT用來設置虛擬環境的位置,如果將值設為1,然后在當前要創建虛擬目錄下創建(.vnev)文件,在激活虛擬環境后會在當前 目錄(.venv)目錄下,將虛擬環境的位置設置在當前目錄下的.venv目錄下

$export PIPENV_NENV_IN_PROJECT=1
$pipenv shell

pipenv會自動加載項目中的.env文件,如果.env文件不在項目路徑下可以通過變量來設置PIPENV_DOTENV_LOCATION來指定.env的路徑

$PIPENV_DOTENV_LOCATION=/PATH/to/.env pipenv shell

#如果要防止pipenv加載.env文件,請設置PIPENV_DONT_LOAD_ENV環境變量的值為1
$PIPENV_DONT_LOAD_ENV=1 pipenv shell

如果要自定義虛擬環境位置,可以使用變量WORKON_HOME來設置創建的虛擬環境.venv路徑,注意在使用了PIPENV_NENV_IN_PROJECT變量的情況下WORKON_HOME不會生效

$export WORKON_HOME=/project/.venvs
$pipenv --three
#將在指定的目錄下生成虛擬環境

可以通過PIPENV_CACHE_DIRL變量來指定pipenv的緩存位置

如果系統安裝了pyenv的話,在你的虛擬目錄文件Pipfile中配置了python版本,如3.8,但在創建虛擬環境時沒有在系統中找到此python版本,則pipenv將詢問並調用pyenv安裝需要的python版本,然后配置虛擬環境

7、pipenv卸載軟件說明

 例如我安裝了request軟件包,但它依賴別的很多包,具體請開下面詳細輸出,但在卸載requests包時,pipenv將忽略依賴關系包只卸載requests包,感覺上像是一個bug

#pipenv install requests -v
Installing requests…

#pipenv graph
requests==2.19.0
  - certifi [required: >=2017.4.17, installed: 2018.4.16]
  - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
  - idna [required: <2.8,>=2.5, installed: 2.7]
  - urllib3 [required: >=1.21.1,<1.24, installed: 1.23]

#看下Pipfile.lock文件記錄很詳細
#cat Pipfile.lock 
{
    "_meta": {
        "hash": {
            "sha256": "44a80a6b0595dff14e33470723a9eaddd419f3cb2188cfa8a9f6c6db1afa7db5"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.6"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "http://mirrors.aliyun.com/pypi/simple",
                "verify_ssl": false
            }
        ]
    },
    "default": {
        "certifi": {
            "hashes": [
                "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
                "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
            ],
            "version": "==2018.4.16"
        },
        "chardet": {
            "hashes": [
                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
            ],
            "version": "==3.0.4"
        },
        "idna": {
            "hashes": [
                "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e",
                "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16"
            ],
            "version": "==2.7"
        },
        "requests": {
            "hashes": [
                "sha256:421cfc8d9dde7d6aff68196420afd86b88c65d77d8da9cf83f4ecad785d7b9d6",
                "sha256:cc408268d0e21589bcc2b2c248e42932b8c4d112f499c12c92e99e2178a6134c"
            ],
            "index": "pypi",
            "version": "==2.19.0"
        },
        "urllib3": {
            "hashes": [
                "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf",
                "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"
            ],
            "version": "==1.23"
        }
    },
    "develop": {}
}

#卸載requests
#pipenv uninstall requests -v
Un-installing requests…
$ "/root/.venvs/p5-FPX5z4vr/bin/pip" uninstall requests -y
Uninstalling requests-2.19.0:
  Successfully uninstalled requests-2.19.0

Removing requests from Pipfile…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (5020d6)!

#依賴包沒有卸載
#pipenv graph
certifi==2018.4.16
chardet==3.0.4
idna==2.7
urllib3==1.23

#但Pipfile.lock文件中所有依賴包記錄都沒有了
#cat Pipfile.lock 
{
    "_meta": {
        "hash": {
            "sha256": "19ca19fa2378f4a82aad03ab25d4575bcdfa444de3d0e7d0f9faab8b5c5020d6"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.6"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "http://mirrors.aliyun.com/pypi/simple",
                "verify_ssl": false
            }
        ]
    },
    "default": {},
    "develop": {}
}
#也就是說pipenv不能卸載包的依賴包,如果卸載了requests包重新安裝的話,pipenv將重新再安裝一遍依賴包

自己寫個腳本實現:

#cat depends.py 
#!/usr/bin/env python3
#coding:utf-8

import sys
import json


def depends(packages,package):
    depend=set()
    depend2=set()
    for item in packages:
        if item['package']['key'] == package:
            for k in item['dependencies']:
                depend.add(k['key'])
    for i in packages:
        if i['dependencies']:
            for j in i['dependencies']:
                if i['package']['key'] in depend:
                    depend2.add(j['key'])
    data = depend.union(depend2)
    data.add(package)
    return ' '.join(data)

if __name__ == '__main__':
    package = sys.argv[1]
    packages = json.load(sys.stdin)
    data = depends(packages,package)
    print(data)
#pipenv uninstall `pipenv graph --json|python3 depends.py ipython`

#執行腳本說明
#1.執行pipenv uninstall卸載包
#2.調用pipenv graph --json獲取包依賴關系的 json格式化后的列表
#3.將列表寫入管道后處理
#4.使用python執行腳本獲取兩個參數sys.argv[1]獲取參數也就是要卸載的包名,第二個參數是獲取的json格式化的列表字符串
#5.通過執行腳本獲取包的依賴的包名,然后執行卸載包和與之關聯的所有依賴包
#注意:要卸載其它包請將腳本后的參數改為要卸載的包名也就是上面列子中的ipython
#腳本經過測試暫未發現問題,值得說明的是如需要卸載關聯嵌套3層的包將無法卸載,也就是要卸載的包下依賴包下的依賴包下的依賴包

8、配置autoenv與pipenv自動激活虛擬環境

#安裝autoenv
pip3 install autoenv
#或者以源碼安裝
git clone https://github.com/kennethreitz/autoenv.git ~/.autoenv
#然后配置autoenv的PATH
#官方推薦方法:
echo 'source ~/.autoenv/activate.sh' >>~/.bashrc
#實際上是將source加activate.sh寫入到環境變量中供bash讀取,activate.sh是安裝的autoenv的執行文件,
#只要找到activate.sh文件路徑通過source或(.)寫入到系統環境變量中即可,如:source /etc/bin/activate.sh
#加入到~/.bash或者/etc/proflie中
#如果是pip安裝的autoenv,則activate.sh文件在python版本的bin目錄下,可以做鏈接到PATH可讀取的路徑中,
#也可以在也可以直接使用絕對路徑來配置,如:
$tail -1 ~/.bashrc source /usr/local/python365/bin/activate.sh $source ~/.bashrc #最后在pipenv創建的項目目錄下新建.env文件,寫入pipenv shell,即可在切換到項目目錄下自動進入virtualenv虛擬
#環境中的shell,第一次執行會有提示選擇y同意,以后就不提示了,設置如下:
#cd project_01 #進入項目目錄#ls #vi .env #cat .env pipenv shell #cd .. #cd project_01/ -bash: shasum: command not found autoenv: autoenv: WARNING: autoenv: This is the first time you are about to source /project_01/.env: autoenv: autoenv: --- (begin contents) --------------------------------------- autoenv: pipenv shell autoenv: autoenv: --- (end contents) ----------------------------------------- autoenv: autoenv: Are you sure you want to allow this? (y/N) y Loading .env environment variables… Spawning environment shell (/bin/bash). Use 'exit' to leave. [root@pypc@project_01@00:28@1]#. /root/.local/share/virtualenvs/project_01-AJQOUQOt/bin/activate (project_01-AJQOUQOt) [root@pypc@project_01@00:28@2]#

 ---------------------------------------------------------------------------------end


免責聲明!

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



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