本文針對於Python初學者,Python老鳥請繞道。
最近同時嘗試在Windows10、MacOS、Ubuntu三個系統上安裝Python相關的包,整體比較,Ubuntu最簡單,Windows10最復雜。
建議:如果可能,盡量使用Linux系統,Windows10系統最好謹慎入坑。
以下記錄Windows平台部分相關模塊的安裝問題:
1、 區分python是32位還是64位,這個至關重要。注意:並不是Windows系統,而是Python。
查看方式:在cmd中輸入python,看下圖中紅圈的部分,一個系統中
2、pywin32
如果python要使用windows系統API的庫,那首先要安裝的是pywin32,官方下載鏈接:
https://sourceforge.net/projects/pywin32/files/pywin32/
1)點擊上述鏈接會看到很多版本,點擊要安裝的版本號,會進入一個列表,
注意:請按照python的版本和python的位數選擇對應的文件,比如
pywin32-221.win-amd64-py2.6.exe -> python2.6.x版本(py2.6),64bit(win-amd64)
pywin32-221.win32-py3.7.exe -> python3.7.x版本(py3.7),32bit(win32)
這個一定要選擇正確,否則后期會提示"dll load faild:%1 不是有效的win32程序",這都是32bit和64bit不匹配的問題。
2)下載后,在安裝時會有兩種問題,提示“找不到python模塊“,或者“python沒有注冊”的錯誤。
問題1:找不到python模塊,而且不支持手動添加python目錄。
解決方式,請在系統的path中添加python的目錄。
問題2:這個是需要導入一個注冊表。
一般的解決方法是執行下邊的python程序即可解決(該方式來源於網上)。
1 # 2 # script to register Python 2.0 or later for use with win32all 3 # and other extensions that require Python registry settings 4 # 5 # written by Joakim Loew for Secret Labs AB / PythonWare 6 # 7 # source: 8 # http://www.pythonware.com/products/works/articles/regpy20.htm 9 # 10 # modified by Valentine Gogichashvili as described in http://www.mail-archive.com/distutils-sig@python.org/msg10512.html 11 12 import sys 13 14 from _winreg import * 15 16 # tweak as necessary 17 version = sys.version[:3] 18 installpath = sys.prefix 19 20 regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version) 21 installkey = "InstallPath" 22 pythonkey = "PythonPath" 23 pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % ( 24 installpath, installpath, installpath 25 ) 26 27 28 def RegisterPy(): 29 try: 30 reg = OpenKey(HKEY_CURRENT_USER, regpath) 31 except EnvironmentError as e: 32 try: 33 reg = CreateKey(HKEY_CURRENT_USER, regpath) 34 SetValue(reg, installkey, REG_SZ, installpath) 35 SetValue(reg, pythonkey, REG_SZ, pythonpath) 36 CloseKey(reg) 37 except: 38 print "*** Unable to register!" 39 return 40 print "--- Python", version, "is now registered!" 41 return 42 if (QueryValue(reg, installkey) == installpath and 43 QueryValue(reg, pythonkey) == pythonpath): 44 CloseKey(reg) 45 print "=== Python", version, "is already registered!" 46 return 47 CloseKey(reg) 48 print "*** Unable to register!" 49 print "*** You probably have another Python installation!" 50 51 52 if __name__ == "__main__": 53 RegisterPy()
我們仔細分析下代碼,其實就是pywin32在執行前要先檢查注冊表的以下兩項:
HKEY_CURRENT_USER\SOFTWARE\Python\Pythoncore\x.x(注:版本,比如2.7,3.6)\InstallPath
這個key的value必須是系統path中python的安裝路徑,
HKEY_CURRENT_USER\SOFTWARE\Python\Pythoncore\x.x(注:版本,比如2.7,3.6)\PythonPath
這個key的value必須是系統path中python的安裝路徑、Lib、DLLs的路徑,沒有找到就創建相應的key並賦值。
所以也可以自己直接手動修改regedit。
3)通過python環境下,import win32api 來驗證是否安裝成功。
3、numby的安裝
numby是很多模塊的依賴庫,比如pandas、scipy、matplotlib等,由於numby使用了部分C編譯的內容,直接通過pip、easy_install等會出錯。
在http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 下載預編譯包,通過pip安裝
注意1:python版本和位數,如果不正確,則在安裝時會報錯。
numpy‑1.11.3+mkl‑cp27‑cp27m‑win32.whl -> python2.7.x版本(cp27),32bit(win32)
numpy‑1.11.3+mkl‑cp36‑cp36m‑win_amd64.whl -> python3.6.x版本(cp36),64bit(win_amd64)
注意2:安裝前請先升級pip版本,否則有可能會失敗。
4、scipy的安裝
scipy的安裝和numpy類似,參考事項參見numpy
http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
5、graphviz的安裝
graphviz是一個圖像軟件,在python下通過pygraphviz來連接。
1)下載並安裝 graphviz
http://www.graphviz.org/download/
2)下載pygraphviz的源碼包並解壓,解壓時請使用管理員權限打開解壓縮工具進行解壓
https://pypi.python.org/pypi/pygraphviz/
3) 安裝vc++編譯器
2.7:http://aka.ms/vcpython27
3.6 : http://landinghub.visualstudio.com/visual-cpp-build-tools
4)通過python setup.py install安裝,安裝到最后會提示出錯。
5)下載 pygraphviz的預編譯包並執行,請注意版本和位數
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygraphviz
下載后通過pip安裝,會提示成功。
6)執行以下命令
pip install pygraphviz --install-option="--include-path=xxxx\Graphviz2.38\include" --install-option="--library-path=xxxx\Graphviz2.38\lib\release\lib"
請用全路徑代替上述紅色部分,執行會提示成功。
至此pygranphviz完全安裝成功,通過import pygraphviz 可以驗證是否安裝成功。