在NodeJS的npm中,您可以创建一个package.json文件来跟踪项目依赖项。如果要安装它们,只需运行npm install
,它就会查看您的包文件,并使用该单个命令安装它们。
在分发我的代码时,python是否有相同的概念,或者我需要告诉我的README中的人安装每个依赖项,如下所示:
pip install package1
pip install package2
在他们使用我的代码之前?
答案 0 :(得分:3)
是的,它称为需求文件:
https://pip.readthedocs.io/en/1.1/requirements.html
您可以指定包名称&版本号。
您还可以指定git网址或本地路径
在通常情况下,您应指定包后跟版本号的数据,例如
sqlalchemy=1.0.1
您可以通过命令
安装requirements.txt
文件中指定的所有软件包
pip install -r requirements.txt
答案 1 :(得分:2)
添加所有必要的包
pip freeze > requirements.txt
创建需求文件。
pip install -r requirements.txt
再次安装这些包,比如说在生产过程中。
答案 2 :(得分:2)
我想在这里推荐 pipenv。使用 Pipenv 管理包更容易,因为它会为您管理包的列表和版本,因为我认为每次对包进行更改时都需要运行 pip freeze
命令。
它需要一个 Pipfile。该文件将包含您需要的所有包及其版本,就像 package.json 一样。
您可以使用 pipenv install/uninstall/update <package>
这也会为您的项目生成一个依赖树。就像 package-lock.json
答案 3 :(得分:2)
最好的方法可能是pipenv!我个人使用它!
但是在本指南中,我将解释如何仅使用 python 和 pip 来实现!而且没有pipenv!这是第一部分!它将让我们很好地了解 pipenv 的工作原理!还有第二部分处理pipenv!检查部分pipenv(更接近 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) 或 where (windows)!)
要停用您使用
> deactivate
https://pip.pypa.io/en/latest/user_guide/#requirements-files
<块引用>“需求文件”是包含要使用 pip install 安装的依赖项列表的文件
(如何安装需求文件)
pip install -r requirements.txt
<块引用>
需求文件用于保存 pip 冻结的结果,以实现可重复安装。在这种情况下,您的需求文件包含 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 是一个尝试像 npm for python 一样的工具!是超集pip!
pipenv 为我们创建虚拟环境!并管理依赖项!
一个很好的功能是能够像文件一样写入packages.json!其中也包含脚本部分!
run python command with alias in command line like npm
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"
有 Pipfile.lock 就像 package.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 运行
要在项目虚拟环境中运行任何东西,您需要使用 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有多丰富!
答案 4 :(得分:1)
安装完所有软件包后,请执行以下操作:
pip freeze > requirements.txt
这将在文件requirements.txt
中添加包详细信息
现在,
对于安装:
pip install -r requirements.txt`
它将完成安装包的工作