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