Hong's Blog
Be Agile. Be Smart. Be Visionary. Be Dedicated.
Python开发环境的简单介绍。
import requests
当在Python代码里import一个Python module时,你就引入了一个“依赖”
Python解释器需要知道依赖的位置。如果import的module不是一个built-in module, 那么Python解释器就会去sys.path指定的目录下搜索。(sys.path在不同的系统上可能会有不同的值。)
sys.path
Python内置了Distutils,它可以帮助开发者“分发”Python module,也帮助用户安装Python module。
python setup.py install
默认情况下,上面的命令会把Python module安装类似/usr/local/lib/pythonX.Y/site-packages之类的目录。
/usr/local/lib/pythonX.Y/site-packages
Distutils是一个比较原始的工具,Python官方也推荐用户使用第三方工具来安装Python module,比如pip。 使用pip可以方便地从PyPI上下载package,并安装它。
pip
$ pip install SomePackage
PyPI类似于Java世界里的Maven(中央)仓库。
PyPI
不管是Distutils还是pip,在安装时都会把package安装到一个“全局的”目录下,比如上文 提到的/usr/local/lib/pythonX.Y/site-packages。这种情况下,更新某个package的 影响是全局的;很可能导致之前的Python程序突然不能工作了。
virtualenv提供了一种解决方案,它可以给不同的Python程序提供一个隔离的环境。 一个Python程序所依赖的所有package都存在于它自己的隔离环境里。
$ virtualenv env
上面的命令生产了一个新的环境。Python执行程序,pip,和所有package都存在于env目录下。
env
使用-p选项,-p PYTHON_EXE, --python=PYTHON_EXE,可以在创建环境时指定Python执行程序。
-p
-p PYTHON_EXE, --python=PYTHON_EXE
pip freeze > requirements.txt pip install -r requirements.txt
pip可以把当前安装的package的版本信息“快照”下来;也就是说你可以把当前可以工作的依赖信息 “快照”下来。未来可以通过requirements.txt把所有package回滚到可工作的状态。开发者 之间也可以通过requirements.txt来确保他们的工作环境是一致的。
requirements.txt
requirements.txt最好被提交到git仓库里。
实际上,requirements.txt有点像Ruby世界里的Gemfile.lock文件。
Gemfile.lock
注: 上面的文字在某种程度上把module,package和依赖混着用。 由于本身不是专业的Python开发者,如果任何错误,恳请指正。
module
package
依赖
如果你觉得这篇文章对你有用,可以微信扫一扫表示🙏 / If you find this post is useful to you, buy me 🍶 via Wechat
Python开发环境简介
Python开发环境的简单介绍。
依赖
当在Python代码里import一个Python module时,你就引入了一个“依赖”
搜索依赖
Python解释器需要知道依赖的位置。如果import的module不是一个built-in module, 那么Python解释器就会去
sys.path
指定的目录下搜索。(sys.path
在不同的系统上可能会有不同的值。)安装依赖
Python内置了Distutils,它可以帮助开发者“分发”Python module,也帮助用户安装Python module。
默认情况下,上面的命令会把Python module安装类似
/usr/local/lib/pythonX.Y/site-packages
之类的目录。pip
Distutils是一个比较原始的工具,Python官方也推荐用户使用第三方工具来安装Python module,比如pip。 使用
pip
可以方便地从PyPI上下载package,并安装它。PyPI
类似于Java世界里的Maven(中央)仓库。virtualenv
不管是Distutils还是pip,在安装时都会把package安装到一个“全局的”目录下,比如上文 提到的
/usr/local/lib/pythonX.Y/site-packages
。这种情况下,更新某个package的 影响是全局的;很可能导致之前的Python程序突然不能工作了。virtualenv提供了一种解决方案,它可以给不同的Python程序提供一个隔离的环境。 一个Python程序所依赖的所有package都存在于它自己的隔离环境里。
上面的命令生产了一个新的环境。Python执行程序,pip,和所有package都存在于
env
目录下。使用
-p
选项,-p PYTHON_EXE, --python=PYTHON_EXE
,可以在创建环境时指定Python执行程序。Requirements Files
pip可以把当前安装的package的版本信息“快照”下来;也就是说你可以把当前可以工作的依赖信息 “快照”下来。未来可以通过
requirements.txt
把所有package回滚到可工作的状态。开发者 之间也可以通过requirements.txt
来确保他们的工作环境是一致的。requirements.txt
最好被提交到git仓库里。实际上,
requirements.txt
有点像Ruby世界里的Gemfile.lock
文件。注: 上面的文字在某种程度上把
module
,package
和依赖
混着用。 由于本身不是专业的Python开发者,如果任何错误,恳请指正。如果你觉得这篇文章对你有用,可以微信扫一扫表示🙏 / If you find this post is useful to you, buy me 🍶 via Wechat