Python

Django学习之路(3)——打造更高效的环境(samba pip等工具安装使用)

摘要:本文中将会讨论两个部分:第一部分为一些常用的设置,如磁盘开机挂载,samba安装,Windows虚拟机中挂载网络磁盘;第二部分为pip工具的安装和使用。 磁盘挂载 由于我安装的是双系统,虽然系统启动后自动给我挂载了Windows下的NTFS分区磁盘,但路径默认为/media/run,管理上有些不太方便,于是我准备将这些磁盘挂载到我的用户目录中来。在安装系统时我创建了一个普通用户叫chin,后面都将会以这个用户登录来进行操作。可以输入以下命令来查看磁盘分区情况: $ sudo blkid  password for chin:  /dev/sda1: LABEL="Vmware" UUID="0DBC11130DBC1113" TYPE="ntfs" PARTUUID="b1fca484-01" /dev/sda2: UUID="d88bf8ba-0e8a-4852-a032-35cb9d92037b" TYPE="ext4" PARTUUID="b1fca484-02" /dev/sda5: UUID="d1a9f6ba-6cdc-4d94-91f3-4713fd4c7248" TYPE="swap" PARTUUID="b1fca484-05" /dev/sda6: UUID="3bb36097-fd4c-4a94-9901-86a6f639dcef" TYPE="ext4" PARTUUID="b1fca484-06" /dev/sdb1: LABEL="Software" UUID="2244E8FC44E8D397" TYPE="ntfs" PARTUUID="a9b7a9b7-01" /dev/sdb5: LABEL="Document" UUID="10AA082C10AA082C" TYPE="ntfs" PARTUUID="a9b7a9b7-05" /dev/sdb6: LABEL="Other" UUID="10AA0ADC10AA0ADC" TYPE="ntfs" PARTUUID="a9b7a9b7-06" /dev/sdc1: LABEL="Windows7" UUID="042AA09C2AA08C6C" TYPE="ntfs" PARTUUID="47125469-01" 我们可以看到LABEL表示的值即为Windows下磁盘的卷标名字,这里我都是命名为英文,比较方便查找。其中,/dev/sda1,/dev/sdb1,/dev/sdb5,/dev/sdb6分别位于我的两块机械硬盘上,且分区格式为ntfs,/dev/sdc1为我的固态硬盘,里边安装了Windows7系统。现在我们要做的就是将机械硬盘上的几个Windows分区开机挂载到我的主目录指定文件夹中,使用管理员权限编辑文件/etc/fstab: #创建挂载目录 mkdir /home/chin/mount mkdir /home/chin/mount/Document mkdir /home/chin/mount/Other mkdir /home/chin/mount/Software mkdir /home/chin/mount/Vmware sudo cat >> /etc/fstab <<EOF /dev/sda1  /home/chin/mount/Vmware ntfsdefaults 0 0 /dev/sdb1  /home/chin/mount/Software ntfsdefaults 0 0 /dev/sdb5  /home/chin/mount/Documentntfsdefaults 0 0 /dev/sdb6  /home/chin/mount/Other ntfsdefaults 0 0 EOF 然后潇洒的输入reboot命令,等重新开机后,磁盘就挂载好了,我们输入mount命令进行查看,磁盘已经挂载好了: ……此处省略若干行…… debugfs on /sys/kernel/debug type debugfs (rw,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) /dev/sda2 on /boot type ext4 (rw,relatime,data=ordered) /dev/sdb5 on /home/chin/mount/Document type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096) /dev/sdb1 on /home/chin/mount/Software type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096) /dev/sdb6 on /home/chin/mount/Other type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096) /dev/sda1 on /home/chin/mount/Vmware type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096) ……此处省略若干行…… 安装samba服务 为什么要安装这个服务呢,我的目的是让虚拟机远程挂载物理机Windows磁盘,好变态,有木有? 有童鞋大呼:为什么要这样玩? 果子哥答曰:万一我在ubuntu中有些Windows下必备的软件用不了,我还可以在虚拟机中操作,挂载物理机的磁盘是为了更好的共享已有的资源嘛,万事俱备了,我才好安心上战场。 前面我们已经安装了各种常用的应用软件,其中有一款叫vmware的东西,对!你没有猜错,我要在Linux中安装Windows虚拟机,是不是开始心动了,跟我来吧。 关于如何时安装Windows 7系统,大家可以百度,这里就不再多说了。 1、安装samba服务 sudo apt-get install samba -y 现在我们已经安装好samba服务了,这里说明下,samba的用户有自己独立的用户文件,它存储在/etc/samba/smbpasswd文件中,而且在使用命令smbpasswd来创建用户和密码时,这个用户在系统中已经存在,比如我的chin用户,但是它的用户密码可以与系统用户的密码不同。 现在来创建一个用户名和密码: sudo smbpasswd -a chin 连续输入两次密码即可创建成功。 接下来我们要将目录/home/chin/mount设置成samba的共享文件夹,需要配置下samba配置文件,在修改配置文件前,千万要记住果子哥的这句话:在修改任何配置文件前先做一个备份!留得青山在,不怕没柴烧! sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.20170201 samba的主配置文件过于复杂,我们只需要在文件最后加上以下配置即可: path = /home/chin/mount available = yes valid users = chin read only = no browseable = yes public = yes writable = yes 重启samba服务 sudo /etc/init.d/samba restart 2、在Windows虚拟机中映射samba共享目录 右键“计算机”,选择“映射网络驱动器(N)...”,文件夹一栏输入:\\192.168.1.10\test,其中,192.168.1.10为我ubuntu机器的IP地址。 点击“完成”,即可以访问物理机的Windows分区了。 安装pip...
阅读全文
Python

Django学习之路(4)——python沙盒virtualenv

先休闲下,本文中纯属果子哥在翻译virtualenv官网 1.沙盒环境 沙盒环境指的是通过为不同的应用创建不同的依赖软件包而存在的工具。它主要是为了解决“项目X依赖版本1.x,而项目Y依赖版本4.x”的问题。虚拟环境能够保持安装目录的整洁和方便管理。 举例说明:你在A项目中需要django 1.10,而在B项目中需要django 1.8,这个时候虚拟环境(我们称之为沙盒)就起作用了。 virtualenv 是一个创建python环境的工具,它能创建所有python可执行的必须软件包,安装它很简单: pip install virtualenv 2.基本使用 点击进入官网 为一个项目创建一个沙盒环境: 不仅能创建python可执行的依赖库文件,而且能创建一个pip来方便的安装管理第三方软件包。在这里,沙盒的名字venv是可以任意取名字的,当然当前目录下不能包含已经存在的文件或目录名。如果你的机器中安装了多个python版本,可以通过如下命令指定一个版本来创建,如: virtualenv -p /usr/bin/python2.7 venv 或者在你的家目录中的~/.bashrc文件中添加一个环境变量 export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7 如果要进入沙盒环境,很简单的执行以下命令:< ```shell source venv/bin/activate 当前的shell终端将会出现提示如: (venv)Your-Computer:your_projectUserName$) 来告诉你沙盒环境已经激活.,从现在起,你用pip安装的任意软件包都将会只安装在沙盒中,试着安装一个requests包试试: ```shell pip install requests 3.退出沙盒环境 只要执行一条命令即可:  deactivate 此时将回到你的系统默认环境变量中,如果你要删除一个沙盒,也很简单 4.其它事项 运行virtualenv命令的选项将不会包含系统中全局的软件包。这个选项对于保持沙盒环境的干净单一性非常有用。 为了保持环境的一致性,使用"freeze"选项是一个不错的主意: 以上命令将会生成一个requirements.txt文件,它保存了一份当前沙盒环境所有软件包的列表以及其版本。你可以使用"pip list"命令来查看这个列表。接下来,你可以在不同的开发环境中使用这份开发环境,仅仅需要执行以下命令即可: pip install -r requirements.txt 这种方式能有效确保在跨平台,跨开发环境,或者跨开发者之间的一致性。
阅读全文
Python

Django学习之路(2)——在ubuntu中安装应用软件

摘要:系统熟悉完了,接下来,我们要把开发软件一个个给安装上,千万不要急躁,磨刀不误砍柴工嘛 1、安装开发环境 sudo apt-get update sudo apt-get install build-essential python-dev  sudo apt-get install autoconf automake flex bison ×-doc 2、安装pycharm 记住一定要安装专业版本,官方网站:下载地址 安装完成效果图: 3、安装五笔拼音输入法 sudo apt-get install fcitx-table-wubi fcitx-table-wbpy -y 配置也相当简单,如图:      4、安装影音播放器 sudo apt-get install vlc     5、安装浏览器 安装谷歌浏览器: sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ wget -q -O - https://dl.google.com/linux/linux_signing_key.pub  | sudo apt-key add - sudo apt-get update sudo apt-get install google-chrome-stable 安装opera浏览器:官网下载 6、安装vmware工具 去官网下载deb安装包:vmware官网 安装完成后效果图      7、安装office办公软件 下载deb包安装:wps官网 安装完成后效果图:      8、安装截图工具ksnapshot sudo apt-get install shutter -y 9、安装音乐播放器qmmp # 添加源 sudo add-apt-repository ppa:forkotov02/ppa # 安装 sudo apt-get install qmmp 安装好后直接输入命令“qmmp”即可运行音乐播放器,炫酷黑,我喜欢! 9、安装SecurCRT 我下载的是最新版本的8.1:点击下载    没有注册码的可以购买支持哈,反正我用什么你不知道下次更新再献上颜色配置 好了,到现在为止应该都差不多了,下一篇就可以安心的搭建django开发环境了 最后献上我的桌面图:   < p style="display:none;" data-background="background-repeat:no-repeat; background-position:center center; background-color:#C6D9F0;">
阅读全文

Django学习之路(1)——Ubuntu还是CentOS?

  前面我有一篇文章写的是在CentOS 7中搭建nginx+django环境:点击这里,个人认为,如果你的服务器中需要一个共享资源式的django站点,可以按我文章中所写的方式搭建生产环境(即产品发布环境)。那么何为共享资源式的环境,其实这个名词是我想不到词了写出来的,意思是说,所以的django站点共享系统中所有的python开发库,这并不是一件非常值得炫耀的事,尤其对于爱整洁的强迫症犯者来说,可能是个灾难,在后面的文章中我将提到python的隔离环境。事实上,对于开发这件事,个人认为强迫症是值得“表扬”的一件事。   言归正传,我的django学习之路就要开始了。对于战士来说,上战场选择一件得心应手的兵器,显然将大大提高自身的攻击力和杀敌的能力。那么我们是选择何种系统作为开发机器呢?Windows or Linux?凭着个人对Linux多年的熟悉程度,果断选择了“Evertything is file”哲学理念的Linux,事实上,它的每一个错误我们都可以刨根问底的找到原因,而之前Windows的开发经历简直让我抓狂——软件安装不上时就两招:重启系统or卸载重装。我不喜欢在这种问题上浪费太多不必要的时间,当然大家可以说我不熟悉Windows,我毫不介意.   既然选择了Linux,那么这么多的发行版本,我该选择哪一种呢?我用过很多Linux发行版本,但CentOS系列我用了很多年了,大概从2009年开始到现在,已经熟透了,该发行版作为服务器系统,其简洁的包管理方式,Redhat团队的长期支持,稳定性和可靠性就可见一斑了。但在家用系统中,CentOS对新硬件的支持和桌面图形软件的支持相对Ubuntu来说就较差了,于是一个大胆的想法在我脑海中诞生了,我决定在我的物理机器上安装Ubuntu系统,原因如下:   1、在Windows中虽然可以用虚拟机安装CentOS开发,但经常会忍不住去看QQ和微信消息,如果系统直接是Linux,那么我就不用受聊天信息干扰了;   2、最新版的16.10是一个长期支持版本,而且ubuntu中总是能拿到最新软件安装包,我可以享受软件安装的乐趣;   3、可以充分利用我的硬件资源;   4、更好的熟悉其它Linux发行版本的软件包管理系统,挑战一下自己。 说干就干,我找来U盘,从Ubuntu官网下载最新的Desktop版本16.10,然后使用Universal USB Installer工具刻录好系统盘。安装时我特意选择安装了English版本,系统安装可以参考:点击这里。系统安装完成后,我一般是五步走:   1、让系统开始连接上互联网,这里可以参考我之前的文章:点击这里   2、通过man手册熟悉下ubuntu的包管理工具:apt-get dpkg apt-file等。我一般是通过对比CentOS的包管理方式来学习,如下表(命令全部以管理员用户运行): 实现目标 Ubuntu CentOS 安装vim编辑器 apt-get install vim -y yum install vim -y 查找tcpdump命令属于哪个软件包(未安装软件包的情况下) apt-file search ifconfig yum provides */ifconfig 查找tcpdump命令属于哪个软件包(已经安装软件包的情况下) dpkg -S /usr/sbin/tcpdump rpm -qf /usr/sbin/tcpdump 查找vim软件包安装了哪些文件 dpkg -L vim rpm -ql vim 仅下载vim软件包不安装 apt-get download vim yum install --downloadonly vim 安装一个已经下载的软件包 dpkg -i vim-xx.x.x.deb rpm -ivh vim-xx.x.x.rpm   其实有这些常用命令就可以玩转ubuntu下的软件包管理了。但在使用过程中我一直有一个功能在ubuntu下没找到,即在CentOS中可以使用yum 指定软件安装目录(使用参数--installroot=),而apt-get却没有这个功能,后面想找一个折中的办法,想通过apt-get download下载包过来,然后通过dpkg --instdir来安装,却有很多限制,无赖的放弃中……   3、感谢systemctl开机启动服务方式大一统了现有的流行发行版本;   4、熟悉下文件系统结构目录;   5、各种安装应用软件(详见正文分解)
阅读全文

Zen of Python

>>> import thisThe Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren't special enough to break the rules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.In the face of ambiguity, refuse the temptation to guess.There should be one-- and preferably only one --obvious way to do it.Although that way may not be obvious at first unless you're Dutch.Now is better than never.Although never is often better than *right* now.If the implementation is hard to explain,...
阅读全文