本文目錄一覽:
如何為python項目創建虛擬環境
我們在開始一個python項目,而不是幾行簡單的代碼時,我們傾向於開始使用第三方的dependencies.當項目越來越大時,我們需要考慮如何有效的管理這些第三方庫。當安裝第三方庫時,我們肯定是想安裝在虛擬環境中。幫助我們保持我們實際系統環境的乾淨,避免打亂整個系統python環境。
我們可以使用pip把第三方庫安裝到python項目中。一個項目中往往要安裝多個,鑒於安裝的第三方庫的各種版本,可能會導致一些兼容和運行的問題。
當我們在python項目中使用pip install ,我們是安裝到全局python下的,將會根據現有的python版本安裝第三方包。
我們可以通過以下命令來查找python的安裝目錄:
如果我們使用pip3 install ,將會安裝到python3安裝目錄的單獨的目錄下。我們可以用以下命令來覆蓋pip3這個命令:
但是這仍然解決不了我們在全局python下安裝第三方庫的問題,將會出現下列的問題:
為了避免以上的問題,python開發者使用虛擬環境。這個虛擬環境把安裝的這些第三方庫在一個隔離的環境中(目錄內)保存。
確保你的系統上已經安裝python
然後看一下pip是否也能正常調用
我們需要一個工具來創建python的虛擬環境,venv。它是封裝在python3.3+版本以上的python中的。
如果我們使用python2,我們需要手動安裝一個工具。這是為數不多的一個我們需要全局安裝的第三方庫。
注意:我們將會在文章中討論很多venv和python3,操作系統環境不同,可能會導致某些命令的些許不同,某些工具的工作原理也些許不同。
如果你的系統上沒有安裝pip:
我們首先要為項目創建一個文件夾,並進入這個文件夾:
然後我們再創建虛擬環境:
這將會創建一個名為virtualenv的目錄,這個目錄將會包含bin、lib、include文件夾,還有一個環境配置文件。
所有的文件都是為了確保,所有的代碼都運行在當前的虛擬環境下。這會幫我們把工作環境和操作系統環境隔離開來,避免我們之前提到的問題。
為了使用這個虛擬環境,我們需要激活它。激活以後,還會更改我們的命令提示符標誌。這個標誌也是為了表明虛擬環境已經激活,python的代碼都是在這個環境下執行。
在虛擬環境下,無法訪問使用全局的第三方庫,在虛擬環境內安裝的庫也無法在外部使用。
在虛擬環境中,只有pip和setuptools是默認安裝的。
激活虛擬環境後,變量path也會相應地發生改變,以達到虛擬環境的目的。
當我們完成工作,想切換回操作系統的全局環境,我們需要使用deactivate退出虛擬環境。
我們配置了虛擬環境並激活以後,我們不想在分享項目時,連同使用pip install命令安裝的第三方庫也一起分享。我們想去除我們的虛擬環境文件夾,但仍然可以在其他的電腦或系統上重新運行我們的工作。
為實現這個目的,我們可以在項目根目錄下創建一個requirement文件。假設我們在虛擬環境下安裝flask,安裝完成後我們使用pip freeze命令。它將會列出我們已經安裝過的庫名和版本號。
我們可以將這個列表寫到requirement文件中,上傳到git保存,或以任何形式跟他人分享。
這個命令也可以更新這個requirements.txt文件,所以在每次安裝一個新的第三方庫時,我們都習慣性的運行一下這個命令,來更新我們的安裝列表。
然後,如果任何人想在他們的電腦上運行我們的項目,他們只需要做:
所有的一切都如在我們電腦上運行的一樣。
安裝pipenv
pipenv基本上是pip的一個替代工具。它引入了兩個文件,pipfile用來替換requirements.txt,Pipfile lock(which enables deterministic builds,確定第三方庫的子依賴庫版本的更新的解決方案)
pipenv在機理上是運行pip和virtualenv,但使用一個命令來簡化操作。
安裝第三方庫,如flask,或numpy
也可以從Version Control system比如git來安裝第三方庫
需要注意上面的-e參數可以使安裝editable,目前對於pipenv來說是必須的。
如果你需要使用pytest來測試項目,但在上線後不需要這個庫,你可以指定這個庫僅僅作用於開發模式 –dev.
–dev將會把第三庫放到pipfile的一個單獨的地方【dev-packages】。
如果你現在完成了開發,本地運行正常,你想鎖定你的開發環境,並轉至線上。使用如下命令確保開發環境:
這個代碼將會創建或更新你的環境,你無需手動更改編輯。我們也應該一直使用自動生成的文件。
lock以後,在production環境,你需要安裝最新的成功的運行環境。
這個命令是告訴pipenv,安裝時忽略pipfile,用pipfile.lock里的列表。pipenv將會創建一模一樣的環境,包括子依賴庫。
現在,另一個人想要對代碼做些更改,這種情況下,他得到代碼,包括pipfile,運行如下命令
這個命令將會安裝開發所需的所有的第三方庫,包括普通的install以及–dev安裝的。
舉例,現在你開發用到的一個第三庫有了版本升級,因為你不需要一個特定的版本,所以你在install的時候沒有指定版本號。當你運行pipenv install時,最新版本的第三方庫會安裝到你的開發環境內。
然後你對代碼做了一些更改,結果如預期一樣。然後你再重複上面的步驟lock你的環境。並更新至Production.
將會使用默認的editor打開第三方庫的代碼。
4.python爬蟲之新建 scrapy 爬蟲項目(抓取和保存)
1.win10 下 win + r 打開cmd 切換新項目的目錄
2.新建scrapy項目的命令:
可以利用pycharm 打開項目文件夾編輯項目
3.items.py
聲明爬取的字段
4.新建scrapy 爬蟲
用命令 scrapy genspider doubanmovie “movie.douban.com” 創建爬蟲。
5.運行爬蟲
5.1 創建運行腳本
(一)、在 scrapy.cfg 同級目錄下創建 pycharm 調試腳本 run.py,避免每次運行爬蟲輸入密碼,內容如下:
6.修改robottxt協議
修改 settings 中的 ROBOTSTXT_OBEY = True 參數為 False,因為默認為 True,就是要遵守 robots.txt 的規則, robots.txt 是遵循 Robot協議 的一個文件,它保存在網站的服務器中,它的作用是,告訴搜索引擎爬蟲,本網站哪些目錄下的網頁不希望你進行爬取收錄。在 Scrapy 啟動後,會在第一時間訪問網站的 robots.txt 文件,然後決定該網站的爬取範圍。查看 robots.txt 可以直接網址後接 robots.txt 即可。
一般構建爬蟲系統,建議自己編寫Item Pipeline,就可以在open(path)選擇自己的保存路徑
參考: # scrapy爬蟲事件以及數據保存為txt,json,mysql
7.1保存為json格式時出現亂碼的解決方式:
scrapy抓取豆瓣書籍保存json文件亂碼問題
中文默認是Unicode,如:
\u5317\u4eac\u5927\u5b66
在setting文件settings.py中設置:
就可以解決了
第二種解決辦法
或在cmd中傳入 -s FEED_EXPORT_ENCODING=’utf-8′
參考:
ubuntu 下創建python環境
Ubuntu中使用python3中的venv創建虛擬環境
以前不知道Python3中內置了venv模塊,一直用的就是virtualenv模塊,venv相比virtualenv好用不少,可以替代virtualenv
一、安裝venv包:
pre$ sudo apt install python3-venv/pre
二、創建虛擬環境
首先創建一個項目文件夾,虛擬環境將會安裝在項目文件夾下,我這裡使用的項目文件夾是myproject,進入mypeoject文件夾,執行命令:
pre$ python3 -m venv venv/pre
這時虛擬環境就創建好了,默認是Python3的環境
三、激活虛擬環境
在項目文件夾下,執行activate文件激活虛擬環境
presource venv/bin/activate/pre
四、創建項目
可以看到項目文件夾下除了venv的虛擬環境文件,沒有項目文件,可以使用pip工具安裝任何你需要的框架,比如flask、django
五、退出虛擬環境
predeactivate/pre
python新項目怎樣創建
python創建新項目的方法:
1、打開pycharm,按順序單擊Filenew ProjectPure Python
2、單擊Create,最後單擊Attaach就可以在當前窗口創建新項目了
更多Python知識,請關註:Python自學網!!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/194458.html