1.包管理
使用pip
> sudo apt-get install python-pip -yq
系统自带的pip版本较低,可使用pip的自更新来升级
> sudo pip install pip -U -q #-q静默安装
建议经常更新
2.setuptools
Python包管理工具setuptools详解
setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建的包时,并不需要已安装setuptools,只要一个启动模块即可。
安装
> sudo apt-get install python-setuptools
脚本安装
>wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
如果是开源项目,建议使用类似下面的兼容代码

try:from setuptools import setup
except ImportError:from distutils.core import setup

3.entry_points
发布的包经常需要一个或多个可执行的入口,以便用户直接执行和调用。
这里用flake8:

Flake8 runs all the tools by launching the single flake8 command

Flake8通过启动单个flake8命令运行所有工具。
使用entry_points的优点,就是可以让这些入口点能够被其他Python程序动态发现包所提供的功能,但是对应的代码的耦合度非常低。

坑:
>sudo apt-get update 时显示

运行> sudo apt-get dist-upgrade

因为遇到了神奇巨坑,所以从头来了一遍,这里记录一下详细的过程

1.安装VirtualBox
VirtualBox
2.使用Vagrant安装
Vagrant,建立一个开发环境目录,下载需要的box,直接下载比较慢,可以看这里如何下载Vagrant的Box,我发现用4G流量下载比用校园网快多了。打开 VagrantFile,修改 config.vm.box 配置为本地文件,将下载的box放到开发环境目录下,修改box的名字:
config.vm.box = "virtualbox.box"
之后就可以执行
> vagrant up
之后开始配置VagrantFile文件,VagrantFile 原谅我还得用着谷歌翻译才能看得懂

config.vm.provider "virtualbox" do |v|v.customize ["modifyvm", :id, "--name", "first1", "--memory", "2046"]
end

这行设置的意思是调用VBoxManage的modifyvm的命令,设置VM的名称为first1,内存为2048MB。

config.vm.hostname = "WEB"

设置hostname非常重要,因为当我们有很多台虚拟服务器的时候,都是依靠hostname來做识别的

config.vm.network :forwarded_port, guest: 9000, host: 9000
config.vm.network :forwarded_port, guest: 3141, host: 3141
config.vm.network :forwarded_port, guest: 5000, host: 5000

这几句厉害了,forwarded_port用来设置端口转发,“guest:9000,host:9000”表示访问本机9000端口的流量会转发到虚拟机上的9000端口,反之亦然。例如你在你的虚拟机上使用nginx跑了一个Go应用,那么你在host机器上的浏览器中打开http://localhost:9000时,Vagrant就会把这个请求转发到VM里面跑在9000端口的nginx服务上。

config.ssh.username = 'ubuntu'

设置Vagrant默认情况下SSH的用户名。如果提供者检测到更合适的用户,则可以自由重写。

config.ssh.password = 'ubuntu'

设置了Vagrant将用来认证SSH用户的密码。

config.ssh.insert_key = false

如果true,Vagrant将自动插入用于SSH的密钥对,以便在检测到机器时替换Vagrant的默认不安全密钥。默认情况下,这是真的。只有在尚未使用私钥进行身份验证或者您依赖于默认的不安全密钥时才有效。如果不关心项目的安全性,并希望继续使用默认的不安全密钥,就将其设置为false。

 config.ssh.private_key_path = ["~/.ssh/id_rsa"]

用于SSH到客户机的私钥的路径。默认情况下,是Vagrant随附的不安全私钥,因为这是公共使用的。如果使用自定义SSH密钥创建自己的自定义框,则应指向该私钥。还可以通过将此设置为数组来指定多个私钥。

config.vm.provision "file", source: "~/.ssh/id_rsa.pub", destination: "~/.ssh/authorized_keys"

Configures provisioners on the machine, so that software can be automatically installed and configured when the machine is created.

config.vm.synced_folder ".", "/vagrant", disabled: true

在机器上配置同步的文件夹,以便主机上的文件夹可以与客机同步。
修改完Vagrantfile的配置后,记得要用
> vagrant reload
命令来重启VM之后才能使用VM更新后的配置。但这个VagrantFile需要先执行
> ssh-keygen
如果出现

‘ssh-keygen’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

要先安装git,推荐一个教程Git教程在环境变量中修改PATH

《Python Web开发实战》踩地雷记17/3/22相关推荐

  1. 如何评价python知乎_如何评价《Python Web开发实战》?

    我先说一个「为什么给人没有太多实战的感觉」的问题吧.我这本书借着「豆瓣」这个title出版,相信很多人对其中豆瓣相关的内容都很关注,最后可能会比较失望,因为比较少的介绍到豆瓣自己造的轮子.另外我给其他 ...

  2. 《Python Web开发实战》踩地雷记17/3/25

    写东西一定要随时保存,昨天晚上又被自己给坑了,悲伤脸. 1.vim 设置vim中Tab的缩进 cd ~vim .vimrc 在文件中输入下面的内容并保存 set tabstop=4 set shift ...

  3. 《Python Web开发实战》踩地雷记17/3/27

    1.Flask-SQLAlchemy Flask-SQLAlchemy是一个Flask扩展,简化了Flask程序中使用SQLAlchemy的操作.SQLAlchemy是一个很强大的关系型数据库框架,支 ...

  4. 《Python Web开发实战》踩地雷记17/3/26

    Linux修改文件名:mv [文件名1] [文件名2] 1.Flask-WTF Flask-WTF扩展可以把处理Web表单的过程编程一种愉快的体验.这个扩展对独立的WTForms包进行了包装,方便集成 ...

  5. 《Python Web开发实战》踩地雷记17/3/23

    遇到了配置VagrantFile的问题,详见VagrantFile config.vm.network 问题已经被解决了,所以说有问题多去stack overflow一下.但还是被vagrant搞的烦 ...

  6. 《Python Web开发实战》踩地雷记17/3/24

    今天在创建虚拟环境的时候,执行> virtualenv venv 脚本目录一直被创建在/home/shitfly/venv这个目录下面,折腾半天,发现是在virtualenv定制化的时候EXTR ...

  7. 《Python Web开发实战》踩地雷记17/3/21

    1.安装VirtualBox 直接在官网下载 2.使用Vagrant安装 直接在官网下载安装 下载使用笔者打包好的Box,名字后缀加.box,克隆笔者的Vagrantfile. 创建一个SSH密钥用于 ...

  8. pythonweb开发-手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

  9. python web-手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

最新文章

  1. SQL For Xml
  2. WF初学者对工作流的认识
  3. 中国石蜡行业供需情况与投资战略规划研究报告2022-2028年版
  4. android phpmyadmin,从android studio向phpmyadmin添加数据时出现问题
  5. Google发布TCC 更好的理解视频中事件逻辑
  6. 深度学习工作机制通俗介绍
  7. 前端学习(3013):vue+element今日头条管理--表单验证基本使用
  8. Python在SQLite数据库中动态创建数据表的思路与实现
  9. 求浮点数的幂的精确值
  10. 常用的Linux命令组合
  11. ODP.NET连接池性能计数器
  12. 【车间调度】基于matlab差分进化算法求解作业车间调度问题【含Matlab源码 1743期】
  13. AOF -- Redis 设计与实现
  14. Android 6.0谷歌卡刷包,卡刷包走起:谷歌Nexus5升级安卓6.0/Android M教程
  15. Flotherm 2021热仿真分析基础到高级视频教程
  16. 二叉查找树,平衡二叉树
  17. PHP删除多选checkbox,php一次性删除前台checkbox多选内容的简单示例
  18. 树莓派3代ROS系统镜像文件下载链接
  19. 尾递归优化 - 尾递归优化
  20. java 发送客服消息,Java调用微信客服消息实现发货通知的方法详解

热门文章

  1. Eclipse导入项目时Finish不能点击(项目重名)解决办法
  2. ffmpeg综合应用示例(二)——为直播流添加特效
  3. spring-boot 连接人大金仓
  4. 2021 分布式 CAP的前世今生
  5. v-charts 导出图片
  6. vue图片裁剪固定尺寸/vue-cropper的使用
  7. 游戏开始了------全屏与横屏
  8. itext操作pdf文档
  9. Android USB OTG U盘读写相关使用最全总结
  10. python去除数据列中的英文