python基礎 python安裝及問題解決

2022-08-12 18:06:14 字數 4472 閱讀 2355

centos 7上預設安裝的python版本是2.7.5,系統自帶的舊版本python被系統很多其他軟體環境依賴,因此不能解除安裝原python,但可以再安裝另乙個python版本

[root@python ~]# python -v

python 2.7.5

#python3可能使用的依賴

[root@python ~]# yum install gcc gcc-c++ make zlib* libffi-devel openssl-devel -y

[root@python ~]# wget

[root@python ~]# ll python-3.7.3.tar.xz

-rw-r--r--. 1 root root 17108364 3月 26 19:00 python-3.7.3.tar.xz

[root@python ~]# tar xf python-3.7.3.tar.xz -c /usr/local/src

[root@python ~]# vim /usr/local/src/python-3.7.3/modules/setup.dist

# socket module helper for socket(2)

_socket socketmodule.c timemodule.c

# socket module helper for ssl support; you must comment out the other

# socket line above, and possibly edit the ssl variable:

ssl=/usr/local/ssl

_ssl _ssl.c \

-duse_ssl -i$(ssl)/include -i$(ssl)/include/openssl \

-l$(ssl)/lib -lssl -lcrypto

[root@python ~]# cd /usr/local/src/python-3.7.3

[root@python python-3.7.3]# ./configure --with-ssl --prefix=/usr/local/python3.7.3

[root@python python-3.7.3]# make && make install

#新建軟連線,指向新安裝的python3.7.3

[root@python ~]# ln -s /usr/local/python3.7.3/bin/python3.7 /usr/bin/python3

#檢視ssl是否安裝成功

[root@python ~]# python3

>>> import ssl

>>>

在./configure過程中,如果沒有加上--with-ssl引數時,預設安裝的軟體涉及到ssl的功能不可用,但pip3過程需要ssl模組

一般情況下,linux系統自帶的python2沒有安裝pip,python3.7.3自帶pip,可以進入python3.7.3的bin目錄下進行檢視

[root@python bin]# pwd

/usr/local/python3.7.3/bin

[root@python bin]# ll pip*

-rwxr-xr-x. 1 root root 244 3月 27 05:18 pip

-rwxr-xr-x. 1 root root 244 3月 27 05:18 pip3

-rwxr-xr-x. 1 root root 244 3月 27 05:18 pip3.7

#建立軟連線

[root@python ~]# ln -s /usr/local/python3.7.3/bin/pip3 /usr/bin/pip3

#在使用pip進行操作時,可能會提示pip版本不匹配,需要更新,執行更新命令

[root@python ~]# pip3 install --upgrade pip

successfully installed pip-20.0.2

[root@python bin]# pip3 -v

pip 20.0.2 from /usr/local/python3.7.3/lib/python3.7/site-packages/pip (python 3.7)

什麼是virtualenv

virtualenv用於建立虛擬的python環境,乙個專屬於專案的python環境,不同的專案可以建立不同的pthon環境(依賴項和版本等),各個環境之間完全隔離,不需要擔心和其他專案的python環境以及全域性的python環境發生衝突。

[root@python ~]# pip3 install virtualenv

ln -s /usr/local/python3.6.7/bin/virtualenv /usr/bin/virtualenv

[root@python ~]# virtualenv --version

15.1.0

[root@python ~]# virtualenv py1 #建立名為py1的虛擬環境

new python executable in /root/py1/bin/python

installing setuptools, pip, wheel...done.

直接使用命令virtualenv可以建立乙個獨立的python執行環境,加上引數--no-site-packages,已經安裝到系統python環境中的第三方包都不複製到獨立環境中

[root@python ~]# cd /root/py1/bin/

[root@python bin]# source activate

(py1) [root@python bin]#

(py1) [root@python bin]# deactivate

[root@python bin]#

檢視當前虛擬機器環境目錄worken

切換虛擬環境workon venv2

退出虛擬環境deactivate

刪除虛擬環境rmvirtualenv venv

[root@python ~]# vim .bashrc

export workon_home=$home/.virtualenvs

#測試[root@python ~]# mkvirtualenv py1

[root@python ~]# mkvirtualenv --python=/usr/bin/python3 py2 #指定python環境為3版本

(1)./modules/_ssl.c:57:25: 致命錯誤:openssl/rsa.h:沒有那個檔案或目錄

錯誤原因嘗試編譯的程式使用openssl,但是缺少和openssl鏈結的檔案(庫和標頭檔案)

解決辦法yum install openssl-devel

(2)pip install -i virtualenv deprecation: python 2.7 reached the end of its life on january 1st, 2020. please upgrade your python as python 2.7

已停止維護,用pip3

(3)python3.7安裝後pip pip3 pip3.7的區別

(4)執行virtualenv --version命令提示-bash: virtualenv: command not found

按照如下方式找到virtualenv並建立軟鏈結,再執行上述查詢版本資訊的命令

find / -name virtualenv #全域性查詢virtualenv

/usr/local/python3/bin/virtualenv #找到路徑

ln -s /usr/local/python3.7.3/bin/virtualenv /usr/bin/virtualenv #新增軟鏈結

在bashrc檔案裡面加入如下命令

(6)attributeerror: module 'enum' has no attribute 'intflag'

錯誤原因國內源更新不及時,安裝的包少東西

set properly.

解決辦法1

解決辦法2沒遇到問題(5)需要用本方法解決

fifi

Python基礎 conda在指定環境下安裝包

使用conda install 包的時候,預設是裝在root環境下的 conda在指定環境下安裝包 conda install n env name pandas啟用虛擬環境 source activate env name推出虛擬環境 source deactivate env nameconda...

Python基礎 Python語法基礎

關鍵字是python語言的關鍵組成部分,不可隨便作為其他物件的識別符號 andas assert break class continue defdel elif else except exec finally forfrom global ifimport inis lambda notor p...

Python程式設計基礎之Python基礎

1.只能是乙個詞 2.包含字母,數字和下劃線 3.不能以數字開頭 this program syas hello and asks for your name print hello world1 print what is your name?ask for their name myname i...