分類
Linux

pip3为python3安装模块

Ubuntu 14.04对硬件的要求还是稍高,笔记本有些力不足。Ubuntu 12.04默认是python2,用pip安装模块后也是为python2安装的。想要在Ubuntu 12.04给python3安装需要先安装pip3:

sudo apt-get install python3-setuptools
sudo easy_install3 pip

然后就可以使用pip3为python3安装模块了,如:

pip3 install lxml
pip3 install lxml==4.5.0
pip3 install lxml>=4.5.0
#重新安裝指定版本
pip3 install lxml==4.5.0 --force-reinstall
#製作與使用requirements文件
pip freeze > requirements.txt
pip install -r requirements.txt

剛剛安裝numpy,網速令人抓狂,掛上代理就好多了(沒有合適代理可用下面方法指定國內軟件源):

pip3 install --proxy http://127.0.0.1:8123 numpy

使用重裝大法解決 pip 出現各種疑難

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall
ln -s 目標文件 鏈接文件
ln -s /usr/local/bin/python3.5 /usr/bin/python3

ImportError: No module named _internal.cli.main 可以嘗試把 pip 文件的 from pip._internal import main 修改為 from pip import main

Centos 或 Fedora 安裝python3

其實centos安裝python3就和安裝其他軟件一樣,從官網下載,然後解壓,三扳斧搞定。那我為什麼要記下來呢,只是感嘆下,這麼厲害的軟件居然這麼好裝,哈哈哈!

#for sqlite3
yum install sqlite-devel
#for virtualenv
yum install zlib-devel
#其他依賴
yum install libffi-devel openssl-devel xz-devel bzip2-devel
#然后
wget https://www.python.org/ftp/python/3.9.11/Python-3.9.11.tar.xz
tar xf Python-3.9.11.tar.xz
./configure --prefix="/usr/local" --enable-optimizations --enable-loadable-sqlite-extensions
make
sudo make install

##如果上面編譯的時候加了指定的參數,就不用看下面這幾行了
# centos7 安裝 python3.7的時候要安裝
yum install libffi-devel openssl-devel
# configure 也要加上 --with-ssl
./configure  --with-ssl
#解決的是 No module named '_ctypes'
#和 No module named '_ssl'

python3沒有_tkinter

如果安裝python3時沒有裝tkinter,那麼很可能會遇到這個錯誤:ImportError: No module named _tkinter,我在使用pandas導出圖表時就遇到了。CentOS下經過嘗試,先安裝下面兩個軟件,然後再次執行上面的三扳斧,就有_tkinter模塊啦。

yum install tkinter
yum install tk-devel

Ubuntu下我的python3.5是系統自帶的,所以直接安裝下面的軟件即可。

sudo apt-get install python3-tk
sudo apt-get install tk-dev

Fedora自帶python3,但是也沒有自帶_tkinter,這時只要安裝dnf install python3-tkinter就可以了。

使用 Python 自帶的 venv 模塊建立虛擬環境

自帶的 venv 模塊可以直接使用,可以搭配 pip freeze > requirements.txtpip install -r requirements.txt 來遷移環境。

#在當前目錄建立虛擬環境
python3.11 -m venv my_venv
啟用虛擬環境
source my_venv/bin/activate
#直接使用 pip 安裝需要的依賴即可
#推出虛擬環境
deactivate
#刪除虛擬環境
rm -rf my_venv
#以虛擬環境運行 Python 項目
my_venv/bin/python YOUR_SCRIPT.py

使用 pipenv 建立虛擬環境

#如果主環境沒有 pipenv,則需先安裝
pip install pipenv
#建立一個 Python 3.11 的虛擬環境
pipenv --python 3.11
#如果系統沒有 Python 3.11 則需要你先安裝或編譯,我推薦安裝系統編譯好的
sudo dnf install python3.11 python3.11-devel

#安裝依賴
pipenv install <package_name>

#刪除依賴
pipenv uninstall <package_name>

#檢查安全漏洞
pipenv check

#啟用虛擬環境
pipenv shell

#退出虛擬環境
exit

#在當前文件夾運行 Python 項目
pipenv run YOUR_SCRIPT.py

#查看虛擬環境的具體位置
pipenv --py
#/home/42/.local/share/virtualenvs/scripts-t2tF_lNI/bin/python
#使用虛擬環境運行 Python 項目
/home/42/.local/share/virtualenvs/scripts-t2tF_lNI/bin/python /home/42/workspace/scripts/YOUR_SCRIPT.py

#刪除虛擬環境
pipenv --rm

#恢復虛擬環境。進入 Pipfile 和 Pipfile.lock 所在目錄
pipenv install

使用virtualenv才是解決多python版本的好方法(過時)

多版本的Python及virtualenv的安裝請參考:在CentOS 6.4上设置Python 2.7.6和3.3.3环境,我這裡簡單記下virtualenv的使用。使用virtualenv不必使用高權限。

#centos安裝pip和virtualenv
#Step1
##For RHEL 7.x and CentOS 7.x (x86_64)
yum install epel-release
#Step2
yum install -y python-pip
#Step3
pip install virtualenv
#Fedora裝virtualenv
dnf install python3-pip
dnf install python3-virtualenv
#在當前目錄新建一個python環境
cd pythons
#查看python所在目錄
whereis python
#生成python2.7的環境
virtualenv --python=/usr/local/bin/python2.7 p27
#或生成python3.5的環境
virtualenv --python=/usr/local/bin/python3.5 p35
#如果報ImportError: No module named zlib,centos下可安裝zlib-devel
#然後重新對python執行make和make install
cd p27
#啟用python2.7的環境
source bin/activate
#退出當前環境
deactivate

pip使用國內軟件源

有時網絡環境惡劣,pip裝組建時經常遇到中斷,可以通過下面命令使用國內的軟件源進行安裝。

#豆瓣
pip install numpy -i https://pypi.douban.com/simple/
#阿里雲
pip install virtualenv --trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple

如果想永久修改pip的軟件源,可以修改~/.pip/pip.conf(centos下root用戶為/root/.pip/pip.conf)內容如:

[global]
trusted-host =  mirrors.aliyun.com
index-url = http://mirrors.aliyun.com/pypi/simple

fedora安裝psutil出現No such file

可能是沒有安裝dev和redhat-rpm-config

#python2
dnf install python-devel
#python3
dnf install python3-devel
#redhat-rpm-config
dnf install redhat-rpm-config

本文更新於 2024/03/01。

分類
程序

github用法小记

github还是挺复杂的,记录下免得下次还得搜。首先按照官方文档在网页上建好项目,本地进入对应目录初始化号帐号。然后添加remote:git remote add origin_loc https://github.com/pggdt/项目名.git。然后git pull origin_loc master同步一下。最后将本地的修改提交到github:git commit可以查看本地修改过的文件。git add 文件名,可以添加等下要上传的文件。添加后再用git commit为修改做评价。最后git push origin_loc master就提交完成了。

我就是这么做的,不保证是最正确的做法,有更好意见的请提出来。

網頁註冊賬號,本地安裝git。如果想使用SSH鑒權,秩序把本機的~/.ssh/id_rsa.pub文件內容添加到https://github.com/settings/keys即可。進入要存放項目的目錄,執行git clone [email protected]:pggdt/ulogger-server.git克隆github上的項目到本地。創建cn分支來實現自己的feature git checkout -b cn。然後通過編輯器編輯代碼,完成後通過git status查看變化的文件。通過git add changedFile 來添加文件。通過 git commit -m "更新內容"來提交更新。最後推送到github上git push origin cn。

本文更新於 2018/01/25。

分類
软件

defraggler-Win下好用的磁盘整理

defraggler

defraggler比XP自带的磁盘碎片整理好用很多。对于由磁盘碎片导致的系统缓慢效果显著。

分類
程序

python3批量下图

又发现一个图集,用python3抓下:

import urllib.request def main(): url='http://cdn.test.com/downloads/character' path='/home/me/Pictures/paper/paper-' for i in range(1,400): ii='' if i<10: ii="00"+str(i) elif i<100: ii="0"+str(i) else: ii=str(i) url=url+ii+".jpg" print (url) h='' try: doc=urllib.request.urlopen(url) h=str(doc.info()) except urllib.error.HTTPError: print(ii+'is not exist') if('jpeg' in h): path=path+ii+".jpg" data = urllib.request.urlopen(url).read() f = open(path,"wb") f.write(data) f.close() path='/home/me/Pictures/paper/paper-' print (str(ii)+"OK") url='http://cdn.test.com/downloads/character' if __name__ == "__main__": main()[/code]

有两点改变,python2 import的是urllib,这里用到urlopen,需要import urllib.request。还有就file已经不用了,换成open就好了。getheader函数也没有了。可以对比下python2版本的另一篇python批量下图

分類
其它

htc和sony xperia go开机方式

htc同时按住电源键和音量减键即可进入fastboot,并且可以从fastboot进入recovery。

sony xperia go:

  • 电源键+音量加键(10秒):重启(震动1下,相当于拔出电源再装进去重启)
  • 电源键+音量加键(15秒):重启(震动3下,更高级的重启)
  • 按住音量加键插入USB线,等到指示灯变紫放开音量加键:进入fastboot,此时可在电脑上刷内核之类的。
  • 正常启动,出现sony画面后按住音量加键,指示灯开始变换颜色,然后放开音量加键:进入recovery模式。
分類
其它

快递查询

快递100的快递查询接口。若查询失败,可多尝试几次。

opera mini刷不出这个frame,所以还是直接去http://www.kuaidi100.com/frame/app/index2.html查好了。

分類
程序

python批量下图

有个网站图片很好看,网址也很有规律,但是有的是空链接。用python都下下来了。

import urllib
def main():
  url='http://static.host.com/wallpapers/picture-'
  path='/home/me/Pictures/wallpaper/picture-'
  for i in range(0,400):
    url=url+str(i)+".jpg"
    print url
    doc=urllib.urlopen(url)
    type=doc.info().getheader('Content-Type')
    if(type.find('jpeg')!=-1):
      path=path+str(i)+".jpg"
      data=urllib.urlopen(url).read()
      f=file(path,"wb")  
      f.write(data)  
      f.close()
      path='/home/me/Pictures/wallpaper/picture-'
      print str(i)+"OK"
    url='http://static.host.com/wallpapers/picture-'

if __name__ == "__main__":
  main()

本文更新於 2014/05/26。