pythonforubuntu
1. 我在安裝「愛壁紙HD for ubuntu」時,出現「錯誤'依賴關系不滿足:python-pyside'」 如何解決
裝了pyside再裝壁紙。。。
2. 在ubuntu上安裝python編輯器
$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "right", "credits" or "license" for more information.
>>>
這就進了python
3. ubuntu運行python程序時報錯(OSError: [Errno 2] No such file or directory)
原因:設置錯誤造成。解決方法:重新正確輸入代碼查詢來解決此問題。
如下參考:
1.根據提示檢查錯誤代碼。有問題的是開函數。
4. 如何在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
5. 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!
6. ubuntu14.04自帶python嗎
如果你的ubuntu14.04安裝的是官方原版,那麼裡面就包含了自帶的python。
ubuntu14.04 自帶的Python版本回是python2.7和python3.4
可輸入快捷鍵答Ctrl+Alt+T 打開終端,再輸入 python 即可進入python Shell,不過有些包需要自己安裝。
使用方法:
在Ubuntu14.04 LTS版本中,已經自行安裝了python,可以在Terminal(CTRL+ALT+T)中輸入:ls /usr/bin | grep python 進行查看。
如果想運行python2.7的話,直接在終端輸入:python即可;
如果想運行python3.4的話,直接在終端輸入:python3即可;
7. ubuntu下python編程
def fib(n):
a,b=0,1
while b<n:
print b,
a,b = b,a+b
fib(10)
Python的強制縮進是要時刻注意的。
8. ubuntu下python用什麼軟體
(一)wxpython的安裝
Ubuntu下的安裝,還是比較簡單的。
1234567891011121314
#使用:apt-cache search wxpython 測試一下,可以看到相關信息dizzy@dizzy-pc:~/Python$ apt-cache search wxpythoncain - simulations of chemical reactionscain-examples - simulations of chemical reactionscain-solvers - simulations of chemical reactionsgnumed-client - medical practice management - Client... #這樣的話,直接使用: sudo apt-get install python-wxtools 即可安裝dizzy@dizzy-pc:~/Python$ sudo apt-get install python-wxtools[sudo] password for dizzy:Reading package lists... DoneBuilding dependency tree...
測試是否安裝成功。進入Python,import wx 不報錯,即可
123456
dizzy@dizzy-pc:~/Python$ pythonPython 2.7.3 (default, Apr 20 2012, 22:44:07)[GCC 4.6.3] on linux2Type "help", "right", "credits" or "license" for more information.>>> import wx>>>
(二)顯示出一個窗口
1234567891011121314
#!/usr/bin/python#coding:utf-8 import wx def main(): app = wx.App() win = wx.Frame(None) win.Show() app.MainLoop() if __name__ == '__main__': main()#這便是一個最簡單的可視化窗口的實現
(三)添加可視化組建及簡單布局#coding:utf-8 import wx def main(): app = wx.App() win = wx.Frame(None,title='NotePad',size=(440,320)) #很明顯,title就是標題,size就是大小 bt_open = wx.Button(win,label='open',pos=(275,2),size=(80,30)) bt_save = wx.Button(win,label='save',pos=(355,2),size=(80,30)) #label就是按鈕顯示的標簽,pos是控制項左上角的相對位置,size就是控制項的絕對大小 text_title = wx.TextCtrl(win,pos=(5,2),size=(265,30)) text_content = wx.TextCtrl(win,pos=(5,34),size=(430,276),style=wx.TE_MULTILINE|wx.HSCROLL) #style樣式,wx.TE_MULTILINE使其能夠多行輸入,wx.HSCROOL使其具有水平滾動條 win.Show() app.MainLoop() if __name__ == '__main__': main() #做過桌面軟體開發的,對這個肯定很熟悉。#由於之前學過一點VB,VC,Delphi等,學起來感覺很簡單。#將wx提供的控制項添加到某個Frame上,並進行各自的屬性設置即可完成#由於文本控制項的size屬性,設置的為絕對值。這樣就會有一些問題......
(四)界面布局管理
由於之前的控制項直接綁定在Frame上,這樣會有一些問題。下面將使用Panel面板進行管理。
28293031323334353637383940
## 當然,之前說將各種控制項的位置都寫成絕對位置和大小,會有一些問題。這是不對的## 有時需要動態布局,而有時則需要靜態布局 import wx def main(): #創建App app = wx.App() #創建Frame win = wx.Frame(None,title='NotePad',size=(440,320)) win.Show() #創建Panel panel = wx.Panel(win) #創建open,save按鈕 bt_open = wx.Button(panel,label='open') bt_save = wx.Button(panel,label='save') #創建文本框,文本域 text_filename = wx.TextCtrl(panel) text_contents = wx.TextCtrl(panel,style=wx.TE_MULTILINE|wx.HSCROLL) #添加布局管理器 bsizer_top = wx.BoxSizer() bsizer_top.Add(text_filename,proportion=1,flag=wx.EXPAND) bsizer_top.Add(bt_open,proportion=0,flag=wx.LEFT,border=5) bsizer_top.Add(bt_save,proportion=0,flag=wx.LEFT,border=5) bsizer_all = wx.BoxSizer(wx.VERTICAL) #wx.VERTICAL 橫向分割 bsizer_all.Add(bsizer_top,proportion=0,flag=wx.EXPAND|wx.LEFT,border=5) bsizer_all.Add(text_contents,proportion=1,flag=wx.EXPAND|wx.ALL,border=5) panel.SetSizer(bsizer_all) app.MainLoop() if __name__ == '__main__': main() #這個是動態布局。當然這只是一個視圖而已。#這只是個表面而已,靈魂不在此!
(五)添加控制項的事件處理
直接上代碼。
#!/usr/bin/python#coding:utf-8 import wx def openfile(evt): filepath = text_filename.GetValue() fopen = file(filepath) fcontent = fopen.read() text_contents.SetValue(fcontent) fopen.close() def savefile(evt): filepath = text_filename.GetValue() filecontents = text_contents.GetValue() fopen = file(filepath,'w') fopen.write(filecontents) fopen.close() app = wx.App()#創建Framewin = wx.Frame(None,title='NotePad',size=(440,320))#創建Panelpanel = wx.Panel(win)#創建open,save按鈕bt_open = wx.Button(panel,label='open')bt_open.Bind(wx.EVT_BUTTON,openfile) #添加open按鈕事件綁定,openfile()函數處理bt_save = wx.Button(panel,label='save')bt_save.Bind(wx.EVT_BUTTON,savefile) #添加save按鈕事件綁定,savefile()函數處理#創建文本框,文本域text_filename = wx.TextCtrl(panel)text_contents = wx.TextCtrl(panel,style=wx.TE_MULTILINE|wx.HSCROLL)#添加布局管理器bsizer_top = wx.BoxSizer()bsizer_top.Add(text_filename,proportion=1,flag=wx.EXPAND,border=5)bsizer_top.Add(bt_open,proportion=0,flag=wx.LEFT,border=5)bsizer_top.Add(bt_save,proportion=0,flag=wx.LEFT,border=5) bsizer_all = wx.BoxSizer(wx.VERTICAL)bsizer_all.Add(bsizer_top,proportion=0,flag=wx.EXPAND|wx.LEFT,border=5)bsizer_all.Add(text_contents,proportion=1,flag=wx.EXPAND|wx.ALL,border=5) panel.SetSizer(bsizer_all) win.Show()app.MainLoop() 47,0-1 Bot ######################################################## 打開,保存功能基本實現,但還存在很多bug。 ## 怎麼也算自己的第二個Python小程序吧!! # ###########################################################################
(六)ListCtrl列表控制項的使用示例
ListCtrl這個控制項比較強大,是我比較喜歡使用的控制項之一。
下面是list_report.py中提供的簡單用法:
import wximport sys, glob, randomimport data class DemoFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "wx.ListCtrl in wx.LC_REPORT mode", size=(600,400)) il = wx.ImageList(16,16, True) for name in glob.glob("smicon??.png"): bmp = wx.Bitmap(name, wx.BITMAP_TYPE_PNG) il_max = il.Add(bmp) self.list = wx.ListCtrl(self, -1, style=wx.LC_REPORT) self.list.AssignImageList(il, wx.IMAGE_LIST_SMALL) # Add some columns for col, text in enumerate(data.columns): self.list.InsertColumn(col, text) # add the rows for item in data.rows: index = self.list.InsertStringItem(sys.maxint, item[0]) for col, text in enumerate(item[1:]): self.list.SetStringItem(index, col+1, text) # give each item a random image img = random.randint(0, il_max) self.list.SetItemImage(index, img, img) # set the width of the columns in various ways self.list.SetColumnWidth(0, 120) self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE) self.list.SetColumnWidth(2, wx.LIST_AUTOSIZE) self.list.SetColumnWidth(3, wx.LIST_AUTOSIZE_USEHEADER) app = wx.PySimpleApp()frame = DemoFrame()frame.Show()app.MainLoop()
如何獲取選中的項目?
最常用的方法就是獲取選中的第一項:GetFirstSelected(),這個函數返回一個int,即ListCtrl中的項(Item)的ID。
還有一個方法是:GetNextSelected(itemid),獲取指定的itemid之後的第一個被選中的項,同樣也是返回itemid。
9. ubuntu 下怎樣安裝python
1.先檢查當前系統中是否已經安裝python,直接使用python -V查看
10. Python在Ubuntu中使用什麼編輯器比較好呢
1.如果硬體可以,可以用eclipse加Pydev.
http://www.cnblogs.com/Realh/archive/2010/10/10/1847251.html
2.用Sublime Text也不錯,下面的頁面是windows下的配置,不過Ubuntu下也差不多。
http://www.cnblogs.com/dolphin0520/archive/2013/04/29/3046237.html