=============================
關於 python packaging 和 package manager 以及 虛擬環境 以及 package index server
=============================
python 社區終於和打包相關的事情通盤考慮了,
https://packaging.python.org/guides/tool-recommendations/
=========================
pip 訪問非官方pypi源, 以及代理的設置
=========================
在Windows下安裝某些Python的C extension的wheel包時, 有可能報缺C++ compiler, 需要下載 Microsoft Visual C++ Compiler for Python 2.7
下載地址: http://aka.ms/vcpython27
pypi index server 的列表
http://www.pypi-mirrors.org
pip在線安裝eventlet, 選用pypi.python.org源
pip install eventlet
pip在線安裝eventlet, 選用douban的index server
pip install -i http://pypi.douban.com/simple eventlet
pip在線安裝eventlet, 啟用proxy
pip install --proxy=http://10.224.6.108:8080 eventlet
pip在線安裝requirements.txt內的所有包
pip install -r requirements.txt
如果在命令行指定index server或proxy不起作用, 可以試試在 pip.conf 配置文件中設定.
如果在pip.conf設置proxy還不起作用, 試試在設置OS環境變量.
在pip配置文件設置, 方法是: 隨便新建一個 pip.conf 文件, 然后設定一個OS級別的變量 PIP_CONFIG_FILE 指向這個文件, pip.conf內容為:
[global] timeout = 120 # v2ex 的 index server index-url = http://pypi.v2ex.com/simple trusted-host = pypi.v2ex.com # douban 的 index server #index-url = http://pypi.douban.com/simple #trusted-host = pypi.douban.com # 下面是兩個基於文件系統的index url, 由pip2pi生成索引 #index_url = file:///home/myusername/.pip2pi/simple/ #index_url = file:///C:/pip2pi/simple/ # 下面是 proxy的設置, 到底是http還是https, 需要多試驗 proxy = http://10.224.6.108:8080 #proxy = https://10.224.6.108:8080 #proxy = [[domain\]username:password@]myproxy:myproxyport #在OS 設置proxy環境變量的命令, #export http_proxy=[[domain\]username:password@]myproxy:myproxyport #export https_proxy=[[domain\]username:password@]myproxy:myproxyport
=========================
搭建自己的pypi服務器,
=========================
****搭建私有的pypi服務器, 應該是服務器離線安裝package最簡單的方法了 ***
下載並安裝 pip2pi, 安裝好了后, 共有4個命令文件, 分別是pip2tgz和dir2pi和pip2whl和pip2pi, 我們用pip2tgz和dir2pi就行了.
pip2tgz, 負責下載 packages, 它會自動讀取 $PIP_CONFIG_FILE 配置文件, 太贊了!
dir2pi, 為下載的 packages 建立兼容pypi.python.org的index.
可參考: http://www.diyoms.com/python/1058.html, 步驟如下:
1. 創建包目錄:
D:\software\python\packages
2. 運行命令:
pip2tgz D:\software\python\packages <package name>
這里的package name可以是包名字, 比如sqlalchemy, 也可以是帶版本的包名, 比如sqlalchemy==0.7.8. 如果包很多的話, 可以用-r requirement.txt來一次下載多個包, 就跟pip install -r requirement.txt一樣.
3. 運行命令:
dir2pi -n D:\software\python\packages
這樣, D:\software\python\packages 就多了一個simple目錄, 里面包含所有的包索引
4. [可選步驟]用IIS或Apache或nginx開啟pypi Web訪問服務. 之所以是可選步驟, 是因為pip 可以選用基於file的index url.
我使用 mongoose 作為web server, 下載地址https://github.com/cesanta/mongoose.
rem # on pip server, 假設IP: 192.168.0.100 pip2tgz D:\software\python\packages flask-login rem # on pip server dir2pi -n D:\software\python\packages rem # download mongoose-free-6.1.exe and put it into folder D:\software\python\packages D:\software\python\packages> mongoose-free-6.1.exe rem # python application server, should add trusted-host option pip install -i http://192.168.0.100:8080/simple --trusted-host 192.168.0.100 flask-login