ubuntupython伺服器
A. 如何在ubuntu上安裝python
主要講解的時ubuntu系統下,安裝python
工具/原料
ubuntu系統(當然也可以是虛擬機)
python安裝包
方法/步驟
python安裝包的下載:http://111.13.109.34:83//www.python.org/ftp/python/3.3.3/Python-3.3.3.tgz
或者自己去官網下:http://www.python.org/getit/
下載完成之後,把文件放在linux系統中,放到自己容易到的文件夾下面
之後把tgz文件進行解壓:可以滑鼠操作,也可以用命令:
tar -xzvf ******.tgz (用Tab鍵來提示也可以),解壓之後,如上圖:會有一個文件夾
下面就開始自己編譯安裝了:
命令如下:./configure --prefix=${pwd}
註:prefix=${pwd}指定文件夾
上面運行完之後,再運行命令:make
make運行完成之後(圖),
然後再運行命令:sudo make install
注意如果只允許make install的話,會報錯,提示沒有許可權,錯誤如圖
之後會在當前文件夾下面找到一個名為python的可執行文件。然後將當前文件夾的路徑放到環境變數path中,就大功告成了。
命令:
sudo grdit /etc/profile
在文件末尾加上你自己的路徑
PATH="$PATH:/自己的路徑/Python-3.3.3"
export PATH
例如:PATH="$PATH:/home/cloud/Music/Python-3.3.3"
步驟閱讀
下面就算完成了。在終端輸入python就可以寫python了
B. 利用python,調取ubuntu中的log到本地伺服器中。
這個可以不用腳本。直接用SHELL腳本就可以。 不過因為要跨伺服器。最好解決登陸問題。或者是免登陸。或者是用一個工具解決。 如果一定要用python也成。似乎有一個包,可以SSH登陸。登陸後還可以復制文件。你先復制到本地,再提取內容。用正則表達式提取。最後再添加。
如果文件太大。你可以先SSH登陸,然後傳送一個腳本過去。讓腳本在那個伺服器上提取,再把提取結果復制回來,清理痕跡後,回到自己伺服器再合並。
C. 如何搭建python環境
1、說明:windows下設置python環境變數,就是把python的安裝目錄添加到系統path中。2、步驟:1)確定python安裝目錄,根據版本不同安裝目錄也不同,可以在開始菜單中的快捷方式中查看。在python快捷方式上點右鍵,屬性菜單
3、注意事項:如果未出現python結果,則需要檢查路徑是否設置正確,並重新啟動一下計算機即可。
D. ubuntu下怎麼build一個完整的python
我們需要一個一個編譯這些包:
1. common.sh:這個文件里包含一些基礎設置,比如選用的GCC,CFLAGS和LDFLAGS如何配置。
[plain] view plain
export NDKDIR="/你的NDK路徑比如/android-ndk-r10c"
# GCC 版本選用,目前有4.6,4.8,4.9,選用時也注意Linux系統的類型,這里x86_64是六十四位
export COMPILER="$NDKDIR/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin"
export CC="$COMPILER/arm-linux-androideabi-gcc"
export CXX="$COMPILER/arm-linux-androideabi-g++"
export CPP="$COMPILER/arm-linux-androideabi-cpp"
export LD="$COMPILER/arm-linux-androideabi-ld"
export AS="$COMPILER/arm-linux-androideabi-as"
export AR="$COMPILER/arm-linux-androideabi-ar"
export STRIP="$COMPILER/arm-linux-androideabi-strip"
export OBJCOPY="$COMPILER/arm-linux-androideabi-obj"
export OBJDUMP="$COMPILER/arm-linux-androideabi-objmp"
export RANLIB="$COMPILER/arm-linux-androideabi-ranlib"
export NM="$COMPILER/arm-linux-androideabi-nm"
export STRINGS="$COMPILER/arm-linux-androideabi-strings"
export READELF="$COMPILER/arm-linux-androideabi-readelf"
# 選擇要編譯文件在哪個Android版本上使用,這里案例是在Android 4.2上使用,就是android 17;2.2對應Android 8,5.0對應Android 21
export ANDROID="$NDKDIR/platforms/android-17/arch-arm/usr"
# 配置系統頭文件和庫文件位置
export CFLAGS="-I$ANDROID/include --sysroot=$ANDROID"
export CXXFLAGS="-I$ANDROID/include --sysroot=$ANDROID"
export CPPFLAGS="-I$ANDROID/include"
export LDFLAGS="-L$ANDROID/lib"
2. 編譯openssl:
[plain] view plain
tar zxf openssl-1.0.1j.tar.gz
cd openssl-1.0.1j
mkdir dist
source common.sh
MACHINE=armv7 SYSTEM=android ./config -fPIC --prefix=./dist
# 在Makefile里做一些補丁,以防error
sed -i "s|-m64||" Makefile
sed -i "s|-Wall|-Wall --sysroot=$ANDROID|" Makefile
# 編譯並安裝
make
make install
3. 編譯ncurses,readline,sqlite
仿照openssl的方法,編譯另外三個庫;其實還有一個zlib需要編譯,當然後面不讓python支持bz2就可以忽略。
注意readline編譯最好選擇--with-curses,然後把編譯好的ncurses鏈接上。庫類文件編譯,盡量都加-fPIC,這是什麼,不從匯編說還真說不清楚,還是大家自己去看官方文檔吧。
對於localeconv的問題,大家最好改寫下那個locale.h,在裡面把localeconv的struct里fix放上你要的字元,比如decimal_point是".",這樣後面都不會出這類locale的問題了。
這里給出快捷的解決方案就是把localeconv幹掉,直接hardcode:
[plain] view plain
# 在ncurses編譯之前,需要打的補丁
sed -i "s/#define isDecimalPoint(c) .*/#define isDecimalPoint(c) ((c) == '.')/" form/fty_num.c
sed -i "s/localeconv()/NULL/" form/fty_num.c
[plain] view plain
# 編譯ncurses
./configure --prefix=/YourPath --disable-home-terminfo --without-ada
make
make install
[plain] view plain
# 編譯readline
./configure --prefix=/YourPath --host=arm-linux --build=x86_64-linux \
--enable-static --enable-shared --with-curses
make
make install
[plain] view plain
# 編譯sqlite
./configure --host=arm-linux --build=x86_64-linux
make
make install
4. 編譯Python:
其實過程整體和openssl沒有什麼區別,細節上有一些注意事項。
- configure文件是需要手動fix的,打開文件,搜索 ac_cv_file__dev_ptmx 和 ac_cv_file__dev_ptc;刪除對這兩個變數的自動判斷。手動去Android查看/dev文件夾里有沒有ptmx和ptc設備,有就設置為yes沒就no:
[plain] view plain
ac_cv_file__dev_ptmx=yes
ac_cv_file__dev_ptc=no
- 打開Moles/Setup.dist文件,把需要的python模塊前面的#去掉,比如#_socket socketmole.c timemole.c,要python支持網路socket介面,需要把#去掉;建議盡量多加一些包;實在編譯不過的包不要,有些模塊需要額外下載開源軟體庫編譯,就不只openssl,ncurses,readline,sqlite了。
這樣就可以configure 了:
[plain] view plain
./configure --host=arm-unknown-linux-gnu --build=x86_64-unknown-linux-gnu \
--enable-ipv6
- 有一段編譯會報錯,仔細檢查,發現python需要編譯一個程序,這個程序跑在host上,但gcc是arm的,host linux是x86_64的,所以我們需要復制一份解壓好的python代碼,然後用本地原有的gcc編譯;當然編譯時直接./configure && make就可以了,直到Parser文件夾下出現了pgen這個可執行文件;把它拿出來,復制到另一個python源碼的Parser文件夾中,修改Makefile:
[plain] view plain
sed -i "s|\$(PGEN):.*|\$(PGEN):|" Makefile
sed -i "s|\$(CC) \$(OPT) \$(LDFLAGS) \$(PGENOBJS) \$(LIBS) -o \$(PGEN)|echo \"fake Parser/pgen\"|" Makefile
- 解決locale的問題,還有一些常量問題,笨方法hardcode:
[plain] view plain
sed -i "s|.*localeconv().*||" Objects/stringlib/localeutil.h
sed -i "s|locale_data->grouping|\"\"|" Objects/stringlib/localeutil.h
sed -i "s|locale_data->thousands_sep|\"\"|" Objects/stringlib/localeutil.h
sed -i "s|.*localeconv().*||" Objects/stringlib/formatter.h
sed -i "s|locale_data->grouping|\"\"|" Objects/stringlib/formatter.h
sed -i "s|locale_data->thousands_sep|\"\"|" Objects/stringlib/formatter.h
sed -i "s|locale_data->decimal_point|\".\"|" Objects/stringlib/formatter.h
sed -i "s|.*localeconv().*||" Python/pystrtod.c
sed -i "s|locale_data->decimal_point|\".\"|" Python/pystrtod.c
sed -i "s|I_PUSH|0x5302|" Moles/posixmole.c
sed -i "s|p->pw_gecos|\"\"|" Moles/pwdmole.c
- Moles/socketmole.c: 需要去掉一些#if,不然頭文件里沒有定義,或者直接去$ANDROID的include文件夾把相應.h文件補充完整也可以。
[cpp] view plain
...
Py_BEGIN_ALLOW_THREADS
#ifdef USE_GETHOSTBYNAME_LOCK
PyThread_acquire_lock(netdb_lock, 1);
#endif
h = gethostbyaddr(ap, al, af);
Py_END_ALLOW_THREADS
ret = gethost_common(h, (struct sockaddr *)&addr, sizeof(addr), af);
#ifdef USE_GETHOSTBYNAME_LOCK
PyThread_release_lock(netdb_lock);
#endif
return ret;
...
make然後make -i install,好啦,python編譯出來啦!
下面就是放到android上跑了。
需要Android是root的,不root也可以,就是得找個地方放。
需要把python編譯好的文件夾打包放到android上,還有sqlite里的那個so文件。
root的話可以在/system/bin里軟鏈接一個python。當然,sqlite.so.3要放在/system/lib里。
其實sqlite是可以不編譯的,但是我們的Django需要它,所以還是弄出來吧,ssl也可以不用,但是為了伺服器支持https,還是編譯下吧。
這樣就可以運行python了。
[html] view plain
# python
>>> 1+2
3
然後下載setuptools (https://pypi.python.org/pypi/setuptools/7.0) 和 pip (https://pypi.python.org/pypi/pip/1.5.6) 解壓並安裝:
[plain] view plain
gzip -d setuptools-7.0.tar.gz
tar xf setuptools-7.0.tar
cd setuptools-7.0
python setup.py build
python setup.py install
gzip -d pip-1.5.6.tar.gz
tar xf pip-1.5.6.tar
cd pip-1.5.6
python setup.py build
python setup.py install
把pip軟鏈接到/system/bin。好了,python有了pip,哈哈,隨心安裝包吧。先來個pip install virtualenv
接下去可以安裝django django-sslserver,把django-admin軟鏈接到/system/bin,就可以寫網站啦:
[plain] view plain
django-admin startproject test001
cd test001
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
不安裝django也可以直接對一個文件夾提供http服務:
[plain] view plain
python -m SimpleHTTPServer
有了server,在家庭里就可以搭建平台啦,如果有多個手機,連上wifi,就可以不用接線,完成無線分布式伺服器,趕快練習loadbalance吧。
嗯嗯,看看需不需要用手機伺服器隨時監控家裡的活動,然後插上SIM卡還能自動給我發簡訊,嘿嘿。
後面我們來想像怎麼解決pip install有時需要編譯c文件的問題。其實有團隊已經解決了這個問題。
下載Droid for GCC plugin的apk:http://www.liqucn.com/rj/228351.shtml (這個不是官網,最好去google play下載)
把apk解壓,然後找到gcc的壓縮包,裡面就有gcc了,把它放到Android上:
[plain] view plain
#include <stdio.h>
int main() {
printf("hello world!\n");
return 0;
}
然後gcc -o test test.c,並運行./test,完美輸出hello world。趕緊軟鏈接到/system/bin里吧。
好了,這樣numpy都可以編譯安裝了。還可以編譯下erl,把rabbitmq編譯下,弄個分布式也不是問題。最好移植一下lxc,然後把raspberry里的arm版java搬過來就無敵啦。買個USBminiB轉RJ45的頭就可以插網線了。
總體來說,可以搭建移動伺服器了,以後寫一些網頁版小應用,想用的時候android開個熱點,電腦一連,開始enjoy!
E. 64位的ubuntu,64位的python3.6.9環境下,pycharm無法安裝pyqt5-tools==5.11.3.1.4
這里報錯的提示是,沒有找到5.12.2匹配的版本,也就是說,伺服器上沒有5.12.2這個版本的pyqt5-tools,你可以嘗試先嘗試安裝不帶版本號的,看它默認安裝的是什麼版本,命令是:
pip install pyqt5-tools
如果自動安裝的版本和這個版本差異不大,那麼就可以直接使用的。如果版本差異太大,就打開國內的pip源地址,然後使用瀏覽器搜索功能,查找對應的軟體包名字,然後就可以看到所有版本的pyqt5-tools,找一個和5.12.2版本最接近的即可。
不知道我講清楚了沒有,希望可以幫助到你。
F. 如何配置ubuntu python
1.Python下載
Python下載
地址: http://www.python.org/getit/
版本: Python-2.7.3.tgz
setuptoos下載
地址:http://pypi.python.org/pypi/setuptools#downloads
版本:setuptools-0.6c11.tar.gz(md5)
採用wget方式下載:
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=
2.安裝Python
查看系統自帶的python:
計劃安裝2.7.3,新建目錄--下載安裝包:
解壓
tar -zvxf Python-2.7.3.tgz
解壓後,安裝Python:
./configure --prefix=/usr/local/python2.7.3
make
make install
安裝成功後目錄為:
建立軟鏈接:
3.安裝setuptools
採用wget下載:
[root@biao Python-2.7.3]# pwd
/python/Python-2.7.3
[root@biao Python-2.7.3]# cd ..
[root@biao python]# ll
total 13832
drwxr-x--- 18 1000 1002 4096 Dec 5 18:05 Python-2.7.3
-rwxr-xr-x 1 root root 14135620 Dec 5 17:42 Python-2.7.3.tgz
[root@biao python]# wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=
--18:18:59-- http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
Resolving pypi.python.org... 140.211.10.73
Connecting to pypi.python.org|140.211.10.73|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 256862 (251K) [application/octet-stream]
Saving to: `setuptools-0.6c11.tar.gz'
100%[======================================================================] 256,862 126K/s in 2.0s 18:19:25 (126 KB/s) - `setuptools-0.6c11.tar.gz' saved [256862/256862]
圖片貼起來有點煩,請自行查看http://www.linuxprobe.com/python2-7-install.html這篇技術文章吧。。
G. 如何在Ubuntu 16.04上安裝Anaconda Python Distribution
介紹
Anaconda是一個開源的包管理器,環境管理器,以及Python和R編程語言的分發。它通常用於大規模數據處理,科學計算和預測分析,為數據科學家,開發人員,業務分析師和在DevOps中工作的人員服務。
Anaconda提供超過720個開源包的集合,並提供免費和付費版本。 Anaconda分發帶有conda命令行實用程序。 您可以通過閱讀Anaconda文檔頁面了解有關Anaconda和conda的更多信息 。
本教程將指導您在Ubuntu 16.04伺服器上安裝Anaconda的Python 3版本。
先決條件
在開始本指南之前,您應該有一個非root用戶在您的伺服器上設置sudo許可權。您可以通過完成我們的Ubuntu 16.04初始伺服器設置指南來學習如何做到這一點。
安裝Anaconda
安裝Anaconda的最佳方法是下載最新的Anaconda安裝程序bash腳本,驗證它,然後運行它。
在Anaconda下載頁面找到最新版本的Anaconda for Python 3。在寫作的時候,最新的版本是4.2.0,但你應該使用一個更穩定的版本,如果它可用。
接下來,切換到伺服器上的/tmp 。這是一個很好的目錄下載臨時項目,如Anaconda bash腳本,我們不需要運行它之後。
cd /tmp
H. 如何重置 Ubuntu 14.04 的 Python 環境
如何重置 Ubuntu 14.04 的 Python 環境
R和Python:數字的比較在網上可以經常看到比較R和Python人氣的數字,雖然這些數字往往就這兩種語言是如何在計算機科學的整體生態系統不斷發展,但是很難並列進行比較。主要的原因是,R僅在數據科學的環境中使用,而Python作為一種通用語言,被廣泛應用於許多領域,如網路的發展。這往往導致排名結果偏向於Python,而且從業者工資會較低。R如何使用?R主要用於當數據分析任務需要獨立的計算或分析單個伺服器。這是探索性的工作,因為R有很多包和隨時可用的測試,可以提供提供必要的工具,快速啟動和運行的數量龐大幾乎任何類型的數據分析。R甚至可以是一個大數據解決方案的一部分。
當開始使用R的時候,最好首先安裝RStudio IDE。之後建議你看看下面的流行包:
•dplyr, plyr 和 data.table 可以輕松操作包•stringr 操作字元串•zoo做定期和不定期的時間序列工作•ggvis, lattice, and ggplot2 進行數據可視化•caret 機器學習
I. 我的Ubuntu 16.04 怎麼還是 Python 2.7.11
桌面版的是 python2 ,伺服器的是 python3 ,記得他們是這樣說。畢竟要跟上流統一
別去改桌面發行版自帶的默認 python 版本, 不然早晚一堆坑.
要默認 python3 動自己的~/.profile 或者~/bin 比較好.
J. 如何在ubuntu中命令行關閉python socket伺服器
本文介紹下,在solaris 系統下,python socket server重啟後,提示埠被佔用,telnet埠失敗。這里給出一個解決方法,有需要的朋友參考下。
在solaris 系統下,socket server被重啟後,提示埠被佔用,telnet埠又是不成功的,說明服務已被關閉。
通過netstat可以看到埠還處於於fin_wait_2狀態,solaris要4分鍾才能關閉。
遇到這個問題時,可以採用如下的方法解決,以減少等待時間。
1,加上s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)。
代碼:
復制代碼代碼示例:
self.host=socket.gethostbyname(socket.gethostname())
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((self.host,self.port))
s.listen(5)
2,修改系統fin_wait,time_wait的時間設置。這個時間改短,也利於系統系能。
修改方法
查看或設置:
使用get命令來確定當前時間間隔,並使用set命令將時間間隔指定為30秒。
例如:
復制代碼代碼示例:
ndd -get /dev/tcp tcp_time_wait_interval
ndd -set /dev/tcp tcp_time_wait_interval 30000
預設值:對於 Solaris 操作系統,預設等待時間間隔為 240000 毫秒(即 4 分鍾)。
建議值:60000 毫秒。
Solaris TCP_FIN_WAIT_2_FLUSH_INTERVAL
描述:
指定禁止處於FIN_WAIT_2狀態的連接保持該狀態的計時器時間間隔。
當連接比率較高時,這將累積大量的TCP/IP連接,從而導致伺服器性能下降。在高峰時間段,伺服器會發 生延遲。
如果伺服器延遲,netstat命令顯示對HTTP Server打開的許多套接字處於CLOSE_WAIT或FIN_WAIT_2狀態。
明顯的延遲可能會長達4分鍾,其間伺服器無法發送任何響應,但是CPU利用率保持很高,所有活動都在系統進程中。
查看和設置:
使用get命令來確定當前時間間隔,並使用set命令將時間間隔指定為67.5秒。
例如: