日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Tools】python环境操作笔记

發布時間:2025/3/21 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Tools】python环境操作笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python環境操作筆記

1.安裝Python虛擬環境

2.python pip 添加清華鏡像

3.Ubuntu卸載python后出現系統崩潰以及各種問題的解決方法

4.Python下關于 tkinter 錯誤的解決方法

5. 字符串前面加u、r、b的含義

6. 中文的unicode編碼轉換為中文

7.運行python文件,給命令行加參數,指定某幾塊GPU

8.python中argparse模塊介紹

9. import numpy 和 from numpy import * 的區別

10.python進程被kill掉后GPU顯存不釋放的問題

11.Python中復制與移動的代碼

1.安裝Python虛擬環境

可參考 https://www.cnblogs.com/technologylife/p/6635631.html
Python虛擬環境的主要目的是為了給不同的工程創建互相獨立的運行環境。在虛擬環境下,每一個工程都有自己的依賴包,而與其它的工程無關。不同的虛擬環境中同一個包可以有不同的版本。并且,虛擬環境的數量沒有限制,我們可以輕松地用virtualenv或者pyenv等工具來創建多個虛擬環境。

方法1:使用virtualenv (不推薦,進入虛擬環境的命令也比較長,麻煩。可直接使用方法2)

1.安裝虛擬環境工具的方法

pip install virtualenv

2.創建一個名字叫“zhz”的虛擬環境:

選擇使用一個Python解釋器:

virtualenv -p /usr/bin/python3.5 zhz # -p參數指定Python解釋器程序路徑,這將會使用 /usr/bin/python3.5 中的Python解釋器。

下面這種簡單方法不推薦

virtualenv zhz

這條命令會自動創建一個叫“zhz”的目錄.

3.進入虛擬環境

在“zhz”目錄下的bin目錄下有一個重要的腳本文件activate,這個腳本就是用來將其所在的虛擬環境設置為當前Python的運行環境:

source zhz/bin/activate

在運行完這行命令后,shell的提示符前會出現虛擬環境"zhz"的名字,表示我們已經進入了這個環境中。
這里要注意區分Anaconda里面的命令,anaconda里面進入tensorflow或者pytorch虛擬環境的命令是 source activate zhz

4.安裝各種Python包

使用 “pip install” 命令安裝,例如安裝numpy包

pip install numpy

5.退出虛擬環境

直接使用deactivate命令即可退出虛擬環境

deactivate

這里要注意區分Anaconda里面的命令,anaconda里面退出tensorflow或者pytorch虛擬環境的命令是 source deactivate

6.刪除虛擬環境

要刪除一個虛擬環境,只需刪除它的文件夾。執行

rm -rf venv

方法2:使用virtualenvwrapper管理虛擬環境 (推薦)

在Ubuntu下使用workon時出現workon: command not found錯誤。解決方案如下:

鑒于virtualenv不便于對虛擬環境集中管理,所以推薦直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虛擬環境工作變得便利。它把你所有的虛擬環境都放在一個地方。

虛擬環境的引入解決了我們關于環境沖突的問題,但是它同時也帶來了一個問題,就是虛擬環境過多所帶來的管理問題。virtualenvwrapper就是專門用來解決虛擬環境管理問題的一個工具。我們可以很方便地用它來實現對虛擬環境的創建,刪除,拷貝,并且可以輕松地在不同環境間進行切換。

1.安裝virtualenvwrapper:

pip install virtualenvwrapper

使用

which virtualenvwrapper.sh

查找到上一步得到的virtualenvwrapper.sh文件的位置,然后把該路徑(設為path)填到下面一步的第二句話。

2.配置 ~/.bashrc

將 virtualenv 添加進去:將下面兩句話復制到 ~/.bashrc中,保存退出。
下面第二句句需要修改路徑為上一步的virtualenvwrapper.sh所在路徑path/virtualenvwrapper.sh

export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh #這一句需要修改路徑

3.讓 bashrc 生效

執行以下命令

source ~/.bashrc
注意:

安裝virtualenvwrapper后(即執行完第6步后)就可以使用 workon 命令了。
但是我們會發現使用workon zhz并不能進入我們在第3步使用virtualenv zhz創建的環境zhz中去,并且提示我們使用mkvirtualenv zhz命令創建。

4.創建虛擬環境

指定python版本,可通過"–python"指定python解釋器(使用 whereis python命令或者which python可以查看系統中的Python解釋器路徑)

whereis python mkvirtualenv --python=/usr/local/python3.5.3/bin/python zhz # 這句話需要更改路徑

這樣會在WORKON_HOME變量指定的目錄下新建名為zhz的虛擬環境,在.virtualenvs/目錄下。
查看該環境下都安裝了哪些軟件

workon zhz pip list pip3 list

會發現他們都在只有這幾個包才對

Package Version ------------- ------- pip 19.1.1 pkg-resources 0.0.0 setuptools 41.0.1 wheel 0.33.4

如果接著要安裝pytorch,需要先安裝numpy之后才會import torch成功,因為torch依賴numpy

注意:

mkvirtualenv zhz這種不指定python解釋器的方法不推薦,因為沒有指定python解釋器,默認是系統默認的python環境,因此該虛擬環境下有所有python 包,都是之前系統中pip安裝的。

使用mkvirtualenv創建虛擬環境之后后,會發現zhz環境創建在/home/zhz/.virtualenvs/目錄下,即創建在.virtualenvs/目錄下。而方法一是把環境’zhz’創建在/home/zhz/目錄下。

5.退出虛擬環境,直接使用deactivate命令即可退出虛擬環境

deactivate

6.刪除虛擬環境

rmvirtualenv zhz

2.python pip 添加清華鏡像

搜到兩篇博客寫的:
(1)使用pip 安裝python 庫時連接國外庫時,下載需要很長時間,在配置文件中設置國內鏡像可以提高速度。
在linux 下創建 ~/.pip/pip.conf 文件。文件內容如下

[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host=mirrors.aliyun.com

原文:https://blog.csdn.net/carbon06/article/details/80392248

(2)網上搜到的pip國內鏡像大部分是豆瓣的:
http://pypi.douban.com/simple/
但是根本不全,很多包沒有,所以推薦清華大學的:
https://pypi.tuna.tsinghua.edu.cn/simple

臨時使用
可以在使用pip的時候加參數-i https://pypi.tuna.tsinghua.edu.cn/simple 例如:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gevent

,這樣就會從清華這邊的鏡像去安裝gevent庫。

永久修改
Linux下,修改 ~/.pip/pip.conf (沒有就創建一個), 修改 index-url至tuna,內容如下:

[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple

windows下,直接在user目錄中創建一個pip目錄,如:C:\Users\xx\pip,新建文件pip.ini,內容如下

[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple

原文:https://blog.csdn.net/kwame211/article/details/85773260

(3)安裝tensorflow時,如果使用直接安裝速度相對較慢,采取清華大學的鏡像會提高速度。

pip3 install tensorflow-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple

由系統自動選擇tensorflow-GPU的版本

pip3 install tensorflow-gpu==1.8 -i https://pypi.tuna.tsinghua.edu.cn/simple

人為指定tensorflow版本是1.8,并且是GPU版本

(4) 使用國內鏡像下載python庫的辦法
以下載pandas為例,終端輸入命令(前提是python正確安裝):

pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ pandas

注:–index后面也可以換成別的鏡像,比如http://mirrors.sohu.com/python/

3.Ubuntu卸載python后出現系統崩潰的解決方法

卸載python進入系統后,如果只有一個桌面,解決方法:
1.按ctrl+alt+f1進入控制臺
2.在控制臺登錄,然后輸入

sudo apt-get install ubuntu-minimal ubuntu-standard ubuntu-desktop

3.等待安裝結束,重啟,問題解決

4.Python下關于tkinter錯誤的解決方法

(1) Python下"No module named _tkinter"解決方法

當Python出現"No module named _tkinter"的情況,解決方法如下(適用于Ubuntu 16.04、18.04):

sudo apt-get install python-tk python3-tk tk-dev

然后安裝我想要的Python版本(這一步一定要在上一步的后面才行,否則還是會導入失敗):

pyenv install 3.5.6

然后就可以導入tkinter:

import tkinter

(2)出現"tkinter.TclError: no display name and no $DISPLAY environment variable"的錯誤

不同的系統有不同的用戶圖形接口,默認的接口在windows下跑是沒有問題的,問題是我們很多的webapp都不在windows上跑,一般在linux上面,所以要更改它的默認配置,把模式更改成Agg。

方法1:(我使用這種方案成功解決問題)

在引入pyplot、pylab之前,要先更改matplotlib的后端模式為”Agg”。直接貼代碼:

Import matplotlib matplotlib.use('Agg') # 添加這一行 import matplotlib.pyplot asplt

如果不能把 matplotlib.use(‘Agg’)這句代碼放在正確的位置上,就解決不了錯誤。

方法2: (我使用這種方案沒成功)

更改配置文件方案:
它的配置文件就是matplotlibrc,在哪里呢?不同系統不一樣,系統是ubuntu,運行命令whereis matlotlibrc,可以找到。找不到也沒關系,一般在/etc目錄下,按如下方法找:

cd ~ cd /etc ls

ls后即可以找到matplotlibrc文件。

編輯一下:

sudo vim /etc/matplotlibrc

找到backend這里,然后將其改成Agg.

5. 字符串前面加u、r、b的含義

(1) u/U:表示unicode字符串
不是僅僅是針對中文, 可以針對任何的字符串,代表是對字符串進行unicode編碼。
一般英文字符在使用各種編碼下, 基本都可以正常解析, 所以一般不帶u;但是中文, 必須表明所需編碼, 否則一旦編碼轉換就會出現亂碼。
建議所有編碼方式采用utf8
(2) r/R:非轉義的原始字符串
與普通字符相比,其他相對特殊的字符,其中可能包含轉義字符,即那些,反斜杠加上對應字母,表示對應的特殊含義的,比如最常見的”\n”表示換行,”\t”表示Tab等。而如果是以r開頭,那么說明后面的字符,都是普通的字符了,即如果是“\n”那么表示一個反斜杠字符,一個字母n,而不是表示換行了。
以r開頭的字符,常用于正則表達式,對應著re模塊。
(3) b:bytes
python3.x里默認的str是(py2.x里的)unicode, bytes是(py2.x)的str, b”“前綴代表的就是bytes
python2.x里, b前綴沒什么具體意義, 只是為了兼容python3.x的這種寫法

6. 中文的unicode編碼轉換為中文

在爬蟲抓取網頁信息時常需要將類似"\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8"轉換為中文,實際上這是unicode的中文編碼。可用以下方法轉換:

s = u'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8' print(s)

以上代碼輸出:“人生苦短,py是岸”

s = r'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8' s = s.decode('unicode_escape') print (s)

以上代碼在Python2輸出:“人生苦短,py是岸”,在Python3會出錯:AttributeError: ‘str’ object has no attribute ‘decode’

解決方法:直接去掉decode(‘unicode_escape’)

tips:str通過encode()方法可以編碼為指定的bytes。反過來,當從網絡或磁盤上讀取了字節流,那么讀到的數據就是bytes。要把bytes變為str,就需要用decode()方法。反之,則使用encode()方法即可!
python在bytes和str兩種類型轉換,所需要的函數依次是encode(),decode()

7.運行python文件,給命令行加參數,指定某幾塊GPU

(1) 在代碼中指定GPU的方式為,并非在命令行中這么指定:
os.environ["CUDA_VISIBLE_DEVICES"] = '3' # 指定一塊GPU os.environ["CUDA_VISIBLE_DEVICES"] = '3,4' # 指定多塊GPU,逗號隔開
切記不要單獨分開指定,例如下面這種方法4號會把3號GPU給覆蓋,因為這是給變量賦值,只能一次性賦值,沒有追加的做法:
os.environ["CUDA_VISIBLE_DEVICES"] = '3' # 指定一塊GPU os.environ["CUDA_VISIBLE_DEVICES"] = '4' # 指定一塊GPU
(2) 在命令行中添加參數:

在代碼中分開添加下面代碼:

parser.add_argument('--gpus', default=0, type=str, help='assign gpus') os.environ["CUDA_VISIBLE_DEVICES"] = opt.gpus

值得說明的是opt.gpus的這個gpu就是取自’–gpus’,沒有指定dest所以默認去掉了橫杠。有疑問可參考下面一節argparse模塊的介紹。

8.argparse模塊

摘自:https://blog.csdn.net/weixin_33720452/article/details/88280651

argparse模塊是Python中最重要的模塊之一,其用于命令行參數解析。此模塊的內容非常復雜,本文只選取其中較為實用的部分進行討論。

使用argparse主要分為三個部分:

【第一部分】 是創建一個解析器實例:

parser = argparse.ArgumentParser()

【第二部分】 為多次調用add_argument函數添加命令行參數,每一次add_argument函數的調用都對應于一個命令行參數的配置。

add_argument函數的主要參數如下:

第一、二位置參數:用于設定一個參數的單橫線或雙橫線參數名,或同時設定這二者。注意,單橫線參數名只能使用單個字母,多于一個字母的參數名則必須使用雙橫線。

以下參數均為add_argument函數的關鍵字參數:

action:主要用于將普通參數修改為開關參數。當此參數被設定為字符串store_true時,當前命令行參數變為無需參數的開關參數,如果給出此命令行參數,則參數值解析為True,如果不給出,則解析為False。反之,如果action設定為字符串store_false,則開關參數給出時,參數被解析為False,不給出時,才解析為True。

nargs:默認情況下,一個命令行參數只能接一個后續參數值,而如果將nargs設定為字符串星號或加號時,當前參數將自動被解析為列表,且可以在一個命令行參數后給出多個值。星號與加號的區別類似于正則表達式:星號代表能夠接受0到任意數量的參數,而加號則表示參數至少需要給出一個。此參數也可給定為一個具體的整數,則參數數量必須嚴格等于該值。

default:用于設定默認值。當沒有為這個命令行參數給出值時,就使用此默認值。

type:給定為一個函數,默認為str。一般可給定為int或float,可將字符串形式的參數通過指定的函數轉換為其他類型。

required:默認為False,此時當不給出這個參數時,命令行參數就將被解析為None。而如果指定為True,則該命令行參數必須給出,否則程序將報錯。

help:指定為一個幫助字符串。這個字符串將顯示在調用-h命令時。

dest:指定為一個變量名,用于后續的parse_args函數。

【第三部分】 為通過parse_args函數將參數解析。

此函數返回一個對象,對此對象進行屬性訪問即可獲取到各個命令行參數。而屬性的名稱遵循以下規則:如果某個參數定義了 dest 參數,則使用這個參數作為屬性名,如果沒有,則使用 去掉橫線 的位置參數名作為屬性名,如-i參數就對應于i屬性。

以下通過一個完整的函數說明上文的各種用法:

import argparsedef _inputArguments():parser = argparse.ArgumentParser() # 第一部分# 第二部分parser.add_argument('-a', '--aa', help = 'Argument: A')parser.add_argument('-b', dest = 'bbb', required = True, nargs = '*', help = 'Argument: B')parser.add_argument('-c', action = 'store_true', help = 'Argument: C')parser.add_argument('-d', type = int, default = 1, help = 'Argument: D')args = parser.parse_args() # 第三部分return args.aa, args.bbb, args.c, args.dprint(_inputArguments())

首先,argparse將自動定義-h與—help參數,用于生成幫助信息。

而上述代碼定義了四個參數,A參數為較普通的參數,通過-a或—aa進行給定。

B參數為一個必須給出的不定長參數,給出的各個參數之間以空格隔開即可,如:-b 1 2 3,則此參數就將被解析為:[‘1’, ‘2’, ‘3’]。如果不給出b參數,程序將報錯,且由于設定了 dest參數,故解析時此參數應使用dest參數所給出的屬性名,本例為bbb,而不是b。

C參數為一個開關參數,如果給出-c,則解析出的args.c為True,否則為False。

D參數為一個類型為整形的參數,默認值為1,如果給出D參數,則參數將自動套用int函數轉為整數,否則如果不給出此參數,則默認為1。

9. import numpy 和 from numpy import * 的區別

import numpy用numpy的屬性時,需要這么使用numpy.func();
from numpy import *用numpy屬性時,不需要加上numpy.;

以調用numpy中的random模塊為例,第一種方式要用numpy.random,第二種方式直接用random即可。
但是請特別注意:pep標準推薦使用第一種方式,請在日常使用中盡量使用第一種方法,就比如numpy中random,標準庫中也有random,但是兩者的功能是不同的,使用第二種方式容易造成混淆。

所以一般只在自己定義的python包中使用from ? import *這種方式,自己定義的函數不要與標準庫中的函數名相同即可。

注意自己寫Python包或者模塊的時候需要在文件夾下創建一個__init__.py 的空文件,否則會導入包失敗。

10.python進程被kill掉后GPU顯存不釋放的問題

kill掉服務器里兩個python進程,結果發現GPU的顯存并沒有被釋放,使用top或者ps -A命令也查看不到是那些進程。
解決方法:
1 重新開一個shell,然后輸入:ps aux|grep user_name|grep python,(注意:這里需要把user_name替換成自己電腦的用戶名),所有該用戶下的python程序就會顯示出來(很多在用watch命令都不會顯示的進程在這里可以看到);

2 然后再一個個用kill命令清理:

kill -9 pid # 或者下面的命令 kill-s 9 pid

11.Python中復制與移動的代碼

import shutil shutil.copy('/home/zhz/a.txt', dst_path) # 把a.txt文件復制到dst-path路徑下 shutil.move('/home/zhz/a.txt', dst_path) # 把a.txt文件移動到dst-path路徑下 shutil.copyfile(filename, dst_path + 'b.txt') # 把filename文件復制到dst_path路徑下,并改名為b.txt

總結

以上是生活随笔為你收集整理的【Tools】python环境操作笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。