如何为python项目创建虚拟环境( 二 )


为实现这个目的,我们可以在项目根目录下创建一个requirement文件 。假设我们在虚拟环境下安装flask,安装完成后我们使用pip freeze命令 。它将会列出我们已经安装过的库名和版本号 。
(virtualenv) $ pip freezeclick==8.0.3colorama==0.4.4dataclasses==0.8Flask==2.0.2importlib-metadata=https://www.isolves.com/it/cxkf/yy/Python/2021-10-13/=4.8.1itsdangerous==2.0.1Jinja2==3.0.2MarkupSafe==2.0.1typing-extensions==3.10.0.2Werkzeug==2.0.2zipp==3.6.0我们可以将这个列表写到requirement文件中,上传到git保存,或以任何形式跟他人分享 。
(virtualenv) $ pip freeze > requirements.txt这个命令也可以更新这个requirements.txt文件,所以在每次安装一个新的第三方库时,我们都习惯性的运行一下这个命令,来更新我们的安装列表 。
然后,如果任何人想在他们的电脑上运行我们的项目,他们只需要做:
$ cd copied-project/$ python3 -m venv virtualenv/$ python3 -m pip install -r requirements.txt所有的一切都如在我们电脑上运行的一样 。
使用pipenv来创建python虚拟环境安装pipenv
pip install pipenvpipenv基本上是pip的一个替代工具 。它引入了两个文件,pipfile用来替换requirements.txt,Pipfile lock(which enables deterministic builds,确定第三方库的子依赖库版本的更新的解决方案)
pipenv在机理上是运行pip和virtualenv,但使用一个命令来简化操作 。
$ cd project_folderpipenv shell#如果当前目录没有虚拟环境给,会自动创建一个新的虚拟环境 。#你可以指定使用python3或python2的版本 --two或--three#前提是操作系统上也要安装相应版本的pythonpipenv shell --two 或 --three安装第三方库,如flask,或numpy
pipenv install flask==0.12.1pipenv install numpy #也可以不指定版本号也可以从Version Control system比如git来安装第三方库
pipenv install -e git+https://github.com/requests/requests.git#egg=requests需要注意上面的-e参数可以使安装editable,目前对于pipenv来说是必须的 。
如果你需要使用pytest来测试项目,但在上线后不需要这个库,你可以指定这个库仅仅作用于开发模式 --dev.
pipenv install pytest --dev--dev将会把第三库放到pipfile的一个单独的地方【dev-packages】 。
如果你现在完成了开发,本地运行正常,你想锁定你的开发环境,并转至线上 。使用如下命令确保开发环境:
pipenv lock这个代码将会创建或更新你的环境,你无需手动更改编辑 。我们也应该一直使用自动生成的文件 。
lock以后,在production环境,你需要安装最新的成功的运行环境 。
pipenv install --ignore-pipfile这个命令是告诉pipenv,安装时忽略pipfile,用pipfile.lock里的列表 。pipenv将会创建一模一样的环境,包括子依赖库 。
现在,另一个人想要对代码做些更改,这种情况下,他得到代码,包括pipfile,运行如下命令
pipenv install --dev这个命令将会安装开发所需的所有的第三方库,包括普通的install以及--dev安装的 。
如果没有指定版本号,install命令就会给第三方包括子依赖库一个机会去升级它们的版本
举例,现在你开发用到的一个第三库有了版本升级,因为你不需要一个特定的版本,所以你在install的时候没有指定版本号 。当你运行pipenv install时,最新版本的第三方库会安装到你的开发环境内 。
然后你对代码做了一些更改,结果如预期一样 。然后你再重复上面的步骤lock你的环境 。并更新至Production.
pipenv常用的一些命令#打开一个第三方库 pipenv open flask将会使用默认的editor打开第三方库的代码 。
无需shell运行某个命令pipenv run <command>检查环境安全性pipenv check删除某个库pipenv uninstall numpy删除所有库pipenv uninstall --all删除所有开发时用到的库pipenv uninstall --all-dev



推荐阅读