[英]Does python pip have the equivalent of node's package.json?
在 NodeJS 的 npm 中,您可以创建一个 package.json 文件来跟踪您的项目依赖项。 当您想安装它们时,您只需运行npm install
,它会查看您的包文件并使用该单个命令安装它们。
在分发我的代码时,python 是否具有等效的概念,或者我是否需要在我的 README 中告诉人们安装每个依赖项,如下所示:
pip install package1
pip install package2
在他们可以使用我的代码之前?
一旦添加了所有必要的包
pip freeze > requirements.txt
创建需求文件。
pip install -r requirements.txt
再次安装这些软件包,比如在生产期间。
是的,它称为需求文件:
https://pip.readthedocs.io/en/1.1/requirements.html
您可以指定包名称和版本号。
您还可以指定 git url 或本地路径
通常情况下,您可以指定包后跟版本号,例如
sqlalchemy=1.0.1
您可以通过命令安装requirements.txt
文件中指定的所有包
pip install -r requirements.txt
安装完所有软件包后,请执行以下操作:
pip freeze > requirements.txt
这将在文件requirements.txt
添加包详细信息 现在,对于安装:
pip install -r requirements.txt`
它将完成安装软件包的工作
我想在这里提出pipenv 。 使用Pipenv管理包更容易,因为它为您管理包的列表和版本,因为我认为每次对包进行更改时都需要运行pip freeze
命令。
它将需要一个Pipfile 。 这个文件将包含所有你需要的包和它们的版本,就像 package.json 一样。
您可以使用pipenv install/uninstall/update <package>
删除/更新/添加项目
这也会为您的项目生成一个依赖树。 就像package-lock.json
最好的方法可能是pipenv ! 我个人在用!
但是在本指南中,我将解释如何仅使用 python 和 pip 来完成! 而且没有pipenv! 这是第一部分! 它将让我们很好地了解 pipenv 的工作原理! 还有第二部分处理pipenv ! 检查pipenv (The more close to npm) 部分。
用python搞定一切! 这里的主要元素:
请注意,为此将使用包venv ! 这是官方的! 并附带从 3.3+ 开始的 python 3 安装!
要很好地了解它是什么以及为什么检查这个https://docs.python.org/3/tutorial/venv.html
总之! 一个虚拟环境将帮助我们管理一个独立版本的 python 解释器! 安装的软件包也是如此! 这样! 不同的项目不必依赖相同的包安装而不得不冲突! 阅读上面的链接解释并展示它!
... 这意味着一个 Python 安装可能无法满足每个应用程序的要求。 如果应用程序 A 需要特定模块的 1.0 版,而应用程序 B 需要 2.0 版,则需求存在冲突,安装 1.0 或 2.0 版将导致一个应用程序无法运行。
你可能想查看flask框架文档的解释!
https://flask.palletsprojects.com/en/1.1.x/installation/#virtual-environments
为什么我们关心这个并且应该使用它! 隔离项目! (每个都有它的环境)! 然后冻结命令将在每个项目基础上工作! 检查最后一节
这里有一个关于如何设置和工作的很好的指南:
https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/
首先检查安装部分!
然后
要创建虚拟环境,请转到项目目录并运行:
在 macOS 和 Linux 上:
> python3 -m venv env
在 Windows 上:
> py -m venv env
注意您应该使用 .gitignore 或类似文件从您的版本控制系统中排除您的虚拟环境目录。
要开始在控制台中使用环境,您必须激活它
在 macOS 和 Linux 上:
> source env/bin/activate
在 Windows 上:
> .\env\Scripts\activate
请参阅有关如何检查您是否在环境中的部分(使用 which (linux, unix) or where (windows))!
要停用您使用
> deactivate
https://pip.pypa.io/en/latest/user_guide/#requirements-files
“需求文件”是包含要使用 pip install 安装的依赖项列表的文件,如下所示
(如何安装需求文件)
pip install -r requirements.txt
需求文件用于保存 pip freeze 的结果,以实现可重复安装。 在这种情况下,您的需求文件包含运行pip freeze时安装的所有内容的固定版本。
python -m pip freeze > requirements.txt
python -m pip install -r requirements.txt
一些语法:
pkg1
pkg2==2.1.0
pkg3>=1.0,<=2.0
== 准确!
requests==2.18.4
google-auth==1.1.0
强制 pip 接受早期版本
ProjectA
ProjectB<1.3
使用带有标签的 git(自己修复错误而不是等待)
git+https://myvcs.com/some_dependency@sometag#egg=SomeDependency
再次检查链接https://pip.pypa.io/en/latest/user_guide/#requirements-files我从中挑选了所有示例! 你应该看看解释! 还有细节!
有关格式详细信息,请检查: https : //pip.pypa.io/en/latest/cli/pip_install/#requirements-file-format
Pip 可以使用 freeze 命令导出所有已安装软件包及其版本的列表! 在运行命令时! 列出当前环境中所有已安装软件包的列表!
pip freeze
这将输出如下内容:
cachetools==2.0.1
certifi==2017.7.27.1
chardet==3.0.4
google-auth==1.1.1
idna==2.6
pyasn1==0.3.6
pyasn1-modules==0.1.4
requests==2.18.4
rsa==3.4.2
six==1.11.0
urllib3==1.22
我们可以将其写入需求文件
pip freeze > requirements.txt
https://pip.pypa.io/en/latest/cli/pip_freeze/#pip-freeze
通过为每个项目使用 venv(虚拟环境)! 这些项目是孤立的! 然后 freeze 命令将仅列出安装在该特定环境中的软件包! 这是由项目基地组成的! 冻结命令在运行时列出软件包! 与确切版本匹配! 我们从中生成一个需求文件(requirements.txt)! 我们可以将其添加到项目仓库中! 并安装了依赖项!
整个可以在这个意义上完成:
linux/unix
python3 -m venv env
source env/bin/activate
pip3 install -r requirements.txt
窗户
py -m venv env
.\env\Scripts\activate
pip3 install -r requirements.txt
克隆 repo 后的第一次设置!
创建新环境!
然后激活它!
然后安装所需的包到它!
否则这里是关于使用官方文档中的 requiremnets 文件和虚拟环境安装软件包的完整指南: https : //packaging.python.org/guides/installing-using-pip-and-virtual-environments/
第二个指南也显示得很好: https : //docs.python.org/3/tutorial/venv.html
链接列表(已列出):
https://pipenv.pypa.io/en/latest/
pipenv是一个尝试像 Python 中的 npm 一样的工具! 是一套超级pip!
pipenv 为我们创建虚拟环境! 并管理依赖项!
一个很好的功能是能够像文件一样写入 packages.json ! 脚本部分也在其中!
https://pipenv.pypa.io/en/latest/install/
https://pipenv.pypa.io/en/latest/install/#virtualenv-mapping-caveat
对我来说,在项目中创建 env(就像 node_modules 一样)甚至应该是默认设置! 一定要激活! 通过设置环境变量!
pipenv 似乎更方便!
主要管理运行脚本太好了,不容错过! 一个工具可以简化这一切!
https://pipenv.pypa.io/en/latest/basics/
(请务必查看上面的指南以熟悉基础知识)
注意 npm package.json 的等价物是PipFile文件!
一个例子:
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
flask = "*"
simplejson = "*"
python-dotenv = "*"
[dev-packages]
watchdog = "*"
[scripts]
start = "python -m flask run"
[requires]
python_version = "3.9"
有像 package.lock 这样的Pipfile.lock
运行npm install 等效! 你运行pipenv install
!
安装新包
pipenv install <package>
如果不存在,这将创建一个 Pipfile。 如果确实存在,它将自动使用您提供的新包进行编辑。
就像使用 npm 一样!
$ pipenv install "requests>=1.4" # will install a version equal or larger than 1.4.0
$ pipenv install "requests<=2.13" # will install a version equal or lower than 2.13.0
$ pipenv install "requests>2.19" # will install 2.19.1 but not 2.19.0
如果设置了PIPENV_VENV_IN_PROJECT=1
变量! 使pipenv在项目中设置虚拟环境! 它是在名为.venv (相当于 node_modules)的目录中创建的。
也在目录中没有PipFile 的情况下运行pipenv install ! 既不是虚拟环境! 将在.venv
目录(node_modules equiv)上创建虚拟环境! 并生成一个PipFile和Pipfile.lock !
安装烧瓶示例:
pipenv install flask
安装为开发依赖项
pipenv install watchdog -d
或
pipenv install watchdog -dev
就像使用 npm 一样!
pipenv 所有命令 (pipenv -h)
Commands:
check Checks for PyUp Safety security vulnerabilities and against PEP
508 markers provided in Pipfile.
clean Uninstalls all packages not specified in Pipfile.lock.
graph Displays currently-installed dependency graph information.
install Installs provided packages and adds them to Pipfile, or (if no
packages are given), installs all packages from Pipfile.
lock Generates Pipfile.lock.
open View a given module in your editor.
run Spawns a command installed into the virtualenv.
scripts Lists scripts in current environment config.
shell Spawns a shell within the virtualenv.
sync Installs all packages specified in Pipfile.lock.
uninstall Uninstalls a provided package and removes it from Pipfile.
update Runs lock, then sync.
命令帮助
pipenv install -h
从requirements.txt导入
https://pipenv.pypa.io/en/latest/basics/#importing-from-requirements-txt
使用 pipenv 进行环境管理
https://pipenv.pypa.io/en/latest/basics/#environment-management-with-pipenv
管道运行
要在项目虚拟环境中运行任何东西,您需要使用pipenv run
就像pipenv run python server.py
!
自定义脚本快捷方式
npm 中的脚本!
https://pipenv.pypa.io/en/latest/advanced/#custom-script-shortcuts
[scripts]
start = "python -m flask run"
并运行
pipenv run start
就像使用 npm 一样!
如果您想要锁定文件的 requirements.txt 输出,请运行 $ pipenv lock -r。 然而,这将包括所有散列(这很棒!)。 要获得不带哈希值的 requirements.txt,请使用 $ pipenv run pip freeze。
还要提一下 pipenv cli 渲染做得很好:
请务必阅读基础指南!
你可以看到pipenv有多丰富!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.