linux上部署python本地開發環境


將本地開發環境的依賴項目生成清單文件

1.在本地的開發環境中,env下執行:

1
pip3 freeze >requirements.txt

 

清單文件將會生成在當前項目目錄下,內容如下所示

1
2
3
4
5
certifi==2018.4.16
chardet==3.0.4
idna==2.7
requests==2.19.1
urllib3==1.23

 

將生成后的文件上傳到linux服務器

2.將Python項目上傳到服務器

1
#略...

 

第三步:在linux服務器上為項目創建虛擬環境,並安裝項目所需的依賴

1.切換到pip3所在的目錄 /usr/local/python/bin,執行以下命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安裝虛擬環境
pip3 install virtualenv

# 創建虛擬環境 ENV
virtualenv ENV

# 切換到虛擬環境所在的目錄
cd ENV

# 啟用虛擬環境
source ./bin/activate
關閉虛擬環境:
deactivate

# 安裝依賴清單里的庫
pip3 install -r requirements.txt

# 列出當前虛擬環境所安裝的依賴庫
pip3 list

 使用pip3 install -r requirements.txt 報:

 

 

 

 解決辦法:

我們都知道,想要進行pip升級,其實只要在命令行運行以下代碼即可:

python -m pip install --upgrade pip 

但是由於種種原因,該聯網直接下載更新包的方法總是會被不知名的原因打斷,並反復提示上圖的錯誤。經過種種嘗試和網絡上資料搜尋,本人終於試出一種可行方法,其需要三個注意事項:

1.不要直接win+R然后cmd,而是要選擇“開始”—“Windows系統”—“命令提示符”—右鍵“以管理員身份運行”!!!
2.不要用家用WiFi,開手機熱點連接!!!
3.管理員身份運行命令提示符后,使用鏡像下載升級!!!代碼如下:

python -m pip install --upgrade pip -i https://pypi.douban.com/simple

 

問題一:安裝時報錯ModuleNotFoundError: No module named '_ctypes'的解決辦法

1、執行如下命令:

yum install libffi-devel 

2、從"./configure ..."重新安裝

問題二:pip3 install時報錯“pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.”

先安裝openssl-dev,然后重新編譯安裝,只是在編譯的過程中加入 --enable-optimizations

ubuntu:

sudo apt-get install libffi-dev

或者

  1. sudo apt-get update
  2.  
  3. sudo apt-get upgrade
  4.  
  5. sudo apt-get dist-upgrade
  6.  
  7. sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
  8.  
  9. sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
  10.  
  11. sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
  12.  
  13. sudo apt-get install libssl-dev openssl
  14.  
  15. sudo apt-get install libffi-dev

centos7

yum install libffi-devel -y

 

第四步:添加自定義系統服務(很重要)

1
2
# 這樣的命令在ssh終端退出后,python進程也會被殺掉
python xxx.py &

需要創建一個自定義的系統服務,來保證python程序能夠在后台運行。

1.創建系統服務

1
vim /usr/lib/systemd/system/robot.service

 

內容如下:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=robot
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/python3/bin/ENV/bin/python /usr/local/python3/bin/ENV/p3.py &
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

ExecStart為服務啟動時執行的命令,不能用相對路徑, 一定要全路徑。
這里也可以將命令寫到任意的.sh文件中,這里寫.sh文件的全路徑也是可以的。

2.啟用自定義系統服務

1
systemctl enable robot

 

3.啟動服務

1
systemctl start robot

 

可以查看進程,確認一下服務是否啟動

1
ps aux|grep robot

 

完畢!


免責聲明!

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



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