配置獨立于系統的PYTHON環境

配置獨立于系統的PYTHON環境

python 當前用戶包

一種解決方案是在利用本機的python環境的基礎上,將python的包安裝在當前user的.local文件夾下
一共有兩種方式來實現pip的時候安裝到當前user

設置pip配置文件 pip.conf

一種是在~/.pip文件夾下的pip配置文件pip.conf中設置
加入

[install]    
install-option=--prefix=~/.local

相當于每次在執行

# pip install package 命令的時候在 install 后面加 --prefix 參數指定 install 的路徑  
pip install --prefix=~/.local package

Tips:
python import 查找python package的流程
我的理解 TODO
參考資料 python import 機制

  • pip 參數

另一種實現是直接在pip install的時候加一個 --user, 當然這個也可以寫到pip.conf配置文件中去

pip install --user package

PYTHON 虛擬環境設置

因為在實際工作中經常會遇到創建PYTHON虛擬環境的需求,每次都得去Google,很不方便,這里特意整理一下PYTHON虛擬環境創建的相關資料。

目錄:

  • 虛擬環境有什么好處

  • 常見的創建虛擬環境的工具
    • virtualenv
    • Anaconda
  • 虛擬環境配置的一些小trick

虛擬環境 Cons

有時候我們可能手上會有多個python 項目,每個項目使用不同版本的python(python2.7 python3.5 etc.),并且每個python對應于不同的包依賴,還有一種情況是我們可能沒有root權限,或者多人共用一個服務器,我們想自己創建一個獨立于其他用戶的python環境。

這個時候python虛擬環境機制就顯得很有用了,python虛擬環境主要有以下好處:

  1. 能夠創建一個獨立的python環境,和其他用戶的設置都不沖突
  2. 能夠為每一個項目單獨維護一個環境,適應不同的需求

常見的創建虛擬環境的工具

virtualenv

virtualenv is a tool to create isolated Python environments.

virtualenv 主要解決了以下三個問題:

  1. 不同的項目需要同一個python package的不同版本,無法在/usr/lib/python/site-packages文件夾下面同時維護兩個不同版本(eg. tensorflow 1.0 and tensorflow 1.5)
  2. 需要為某個項目永久(或者長時間)保留一個運行環境,(保持本機的主環境長時間不變動不現實,無意識的更新或者其他項目需要更新)
  3. 在服務器的使用中,普通用戶沒有權限訪問/usr/lib/python/site-packages文件夾,無法修改主機python環境

virtualenv 原理的一個說明:

virtualenv是如何創建“獨立”的Python運行環境的呢?

原理很簡單,就是把系統Python復制一份到virtualenv的環境,用命令source venv/bin/activate進入一個virtualenv環境時,virtualenv會修改相關環境變量,讓命令python和pip均指向當前的virtualenv環境。

安裝virtualenv

virtualenv 的安裝方式很多,可以通過pip安裝,也可以直接從git上下載,通過源碼安裝,還可以用easy_install安裝。

這里只介紹使用pip安裝的方法

  • 安裝到全局

    [sudo] pip install virtualenv
  • 安裝到當前用戶
    shell export PYTHONUSERBASE=$HOME pip install --user virtualenv
    virtualenv 的簡單使用

virtualenv 主要幾個指令是

  • 創建env

    virtualenv env_name --python=python3.x  
    # virtualenv 會在當前文件夾下創建一個名為env_name的文件夾作為虛擬環境env_name的目錄,并且將python3.x作為新創建環境的python解釋器
  • 進入env

    # 想要使用env,需要先active當前環境,命令為:
    source env_path/bin/activate    #Tips: 可以在~/.bash_aliases文件中設定一個alias,方便直接進入env
  • 使用完env以后,可以通過deactivate退出當前env

  • 如果要刪除某個env,只需要 rm -r env_dir,刪除對應的文件夾就可以了

還有一些virtualenv的擴展包,進一步集成了virtualenv的功能:virtualenvwrapper (能夠在一個文件夾下統一管理所有的env)

  • 其他幾個小trick
    • virtualenv 默認不包含全局安裝的python 包
    • 可以在env里面通過pip freeze > requirements.txt 來獲取當前環境所有的python package的信息。這樣在下一次創建環境的時候就可以通過pip install -r requirements.txt直接快速安裝所有依賴包

Anaconda

Anaconda is the most popular python data science platform. (Introduced by the Anaconda website)

Anaconda Python 是專注于數據分析的Python發行版本,包含了conda、python等190多個科學包及其依賴項。

Anaconda分離python環境的原理和virtualenv基本一致,都是通過創建一個獨立的文件夾保存python環境。Anaconda相較于virtualenv不同的地方主要有以下幾點:

  1. Anaconda是一個綜合的python工具,包括python基礎解釋器,IPython,CPython,JupiterBook和一個Python IDE Spyder(Spyder是一個擁有和Matlab相似的界面的Python IDE)
  2. Anaconda配置python環境的時候只需要指定python版本,而不需要本機提前安裝(這相較于virtualenv是一個很大的優勢)
  3. Anaconda基于Conda來管理python包和環境。
Anaconda 常用指令
# 創建新環境
conda create -n env_name python=X.X #創建名為env_name,解釋器為pythonx.x的python虛擬環境
# env_name文件可以在Anaconda安裝目錄envs文件下找到。# 進入python環境
# Linux 
source activate env_name
# Windows
activate env_name# 進入python環境以后的一些命令
conda list # 查看當前環境安裝了那些包
conda env list 
conda info -e
# 查看當前存在那些虛擬環境
conda install package # 安裝第三方python包
# 也可以直接使用pip命令安裝
pip install package# 刪除環境中的某個包
conda remove package
pip uninstall package# 退出當前虛擬環境
source deactivate # Linux
deactivate # Windows# 刪除虛擬環境
conda remove -n env_name

轉載于:https://www.cnblogs.com/yeyuan111/p/10083499.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387793.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387793.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

好程序員技術教程分享JavaScript運動框架

好程序員技術教程分享JavaScript運動框架,有需要的朋友可以參考下。 JavaScript的運動,即讓某元素的某些屬性由一個值變到另一個值的過程。如讓div的width屬性由200px變到400px,opacity屬性由0.3變到1.0,就是一個運動過程。 實現運…

linux 下mysql等php的安裝 lnmp

訪問https://lnmp.org/install.html按照步驟安裝 當下載執行完 wget -c http://soft.vpser.net/lnmp/lnmp1.3.tar.gz && tar zxf lnmp1.3.tar.gz && cd lnmp1.3 && ./install.shlnmp 要到.install.sh下改一下下載地址,把http直接更換成…

單純形法

單純形法 如果目標函數中所有系數都非正,那么顯然這些變量直接取0是最優的,所以此時答案為即為常數項。 我們要做的就是通過轉化把目標函數的系數全部搞成非負。 思路就是用非基變量替換基變量。 先找到一個目標函數中系數為正的變量,在所有限…

洛谷P1828 香甜的黃油 Sweet Butter

香甜的黃油 Sweet Butter 黃油真的是這么做的嗎?!!![惶恐] 這道題是Dijkstra算法的簡單變形 通過題意我們要找到一個點使奶牛所在點的路程和最短。通過Dijkstra的模板我們可以求的一點到其他任一點的最短路徑,那么我們…

JAVA List集合轉Page(分頁對象)

/*** version 1.0* author: fwjia*/ import java.util.List;public class PageModel<T> {/**** 當前頁*/private int page 1;/**** 總頁數*/public int totalPages 0;/**** 每頁數據條數*/private int pageRecorders;/**** 總頁數*/private int totalRows 0;/**** 每頁…

分區分表實驗用的語句

--查看索引 select * from DBA_IND_PARTITIONS &#xff54;; select status,t.* from dba_indexes t where t.OWNERGANSUSC; select count(*) from ACT_HI_VARINST SELECT ALTER INDEX || TABLE_OWNER || . || INDEX_NAME || UNUSABLE; UNUSABLE_INDEX FROM ALL_INDEX…

分布式數據庫數據一致性的原理、與技術實現方案

http://youzhixueyuan.com/the-principle-and-technology-realization-of-distributed-data-consistency.html 背景 可用性&#xff08;Availability&#xff09;和一致性&#xff08;Consistency&#xff09;是分布式系統的基本問題&#xff0c;先有著名的CAP理論定義過分布式…

模塊之re模塊 —— 正則

#‘match’只匹配從左向右第一個值是否在中括號的范圍內&#xff0c;如果沒有就返回None 如果有就直接打印一個對象&#xff0c;加上.group()就可以返回你要找的區間里面的值&#xff0c;如果沒有找到對應的值&#xff0c;加上‘.group()’會報錯 #‘search’ 默認是從整個st…

centos7 docker

Docker 是一個開源工具&#xff0c;它可以讓創建和管理 Linux 容器變得簡單。容器就像是輕量級的虛擬機&#xff0c;并且可以以毫秒級的速度來啟動或停止。Docker 幫助系統管理員和程序員在容器中開發應用程序&#xff0c;并且可以擴展到成千上萬的節點。 容器和 VM&#xff08…

批處理ping指定ip列表

for /f in (filename) do (command) for /f %i in (C:\ip.txt) do (ping %i -n 1 && echo %i 通 >>IP.txt || echo %i 不通 >>IP1.txt) 有返回寫入ip.txt 沒有寫入ip1.txt轉載于:https://blog.51cto.com/2216859/2384188

Intellij Idea 2017創建web項目及tomcat部署實戰

相關軟件&#xff1a;Intellij Idea2017、jdk16、tomcat7 Intellij Idea直接安裝&#xff08;可根據需要選擇自己設置的安裝目錄&#xff09;&#xff0c;jdk使用1.6/1.7/1.8都可以&#xff0c;主要是配置好系統環境變量&#xff0c;tomcat7上tomcat的官網下載壓縮包解壓即可。…

docker ssh

1&#xff0c;首先&#xff0c;需要從Docker官網獲得centos或Ubuntu鏡像 2&#xff0c;當本地已有Ubuntu鏡像后&#xff08;大概200M左右大小&#xff09;&#xff0c;使用如下命令 [cpp]view plaincopy docker run -t -i ubuntu /bin/bash 即可啟動一個容器&#xff0c;并放…

[BFS]JZOJ 4672 Graph Coloring

Description 現在你有一張無向圖包含n個節點m條邊。最初&#xff0c;每一條邊都是藍色或者紅色。每一次你可以將一個節點連接的所有邊變色&#xff08;從紅變藍&#xff0c;藍變紅&#xff09;。找到一種步數最小的方案&#xff0c;使得所有邊的顏色相同。Input 第一行包含兩個…

實現繼承的方式

/*** 借助構造函數實現繼承*/function Parent1(){this.name "parent1";}Parent1.prototype.say function(){};function Child1(){//將父構造函數的this指向子構造函數的實例上Parent1.call(this);//applythis.type "child1";}console.log(new Child1);/…

Vue源碼: 關于vm.$watch()內部原理

vm.$watch()用法 關于vm.$watch()詳細用法可以見官網。 大致用法如下: <script>const app new Vue({el: "#app",data: {a: {b: {c: c}}},mounted () {this.$watch(function () {return this.a.b.c}, this.handle, {deep: true,immediate: true // 默認會初始化…

docker啟動順序

VMDocker: 用戶名:root 密碼:XXXXXXXXXXXXX docker run -i -t -d -p 8081:8080 -p 23:22 67591570dd29 /bin/bash 常用命令 啟動停止: service docker start service docker stop 所有鏡像:docker images 當前執行:docker ps 提交保存docker容器: docker commit 進入到對應服…

js時鐘倒計時

JS倒計時Date 代碼如下&#xff1a; 1 <style type"text/css">2 * {3 margin: 0;4 padding: 0;5 }6 7 #box {8 border: 1px solid cyan;9 background-color: #000; 10 height: 50px; 11 width: 500px; 12 margin: 100px auto 0; 13 border-radius: 20px; 14 te…

JAVA的值傳遞問題

為什么 Java 中只有值傳遞&#xff1f; 首先回顧一下在程序設計語言中有關將參數傳遞給方法&#xff08;或函數&#xff09;的一些專業術語。按值調用(call by value)表示方法接收的是調用者提供的值&#xff0c;而按引用調用&#xff08;call by reference)表示方法接收的是調…

小程序如何封裝自定義組件(Toast)

1、創建和pages 同級的component目錄新建一個myToast目錄 例如: 2、myToast.wxml文件內容: <!-- 自定義toast組件 --> <!-- name 模塊名稱 --><template name"toast" ><!-- catchtouchmove‘xxx’ 遮罩層的滾動穿透 --><!-- isHide 顯示…