有没有一种方法可以在Python中自动安装所需的包?

s1ag04yj  于 2023-08-08  发布在  Python
关注(0)|答案(6)|浏览(144)

在Node.js中,我们为一个项目创建了一个package.json文件,其中列出了所有的依赖项,以便NPM可以自动安装它们。
有没有一种与Python相同的方法可以做到这一点?

eit6fx6z

eit6fx6z1#

节点有npm类似于python有pip
pip是一个包管理系统,用于安装和管理Python编写的软件包。
所以首先你需要安装pip

sudo apt-get install python-pip

字符串
您必须将您的需求保存在项目文件夹的requirements.txt中,就像package.json中的nodejs一样。
例如:

pip install package1
pip install package2
pip install package3


然后转到您的项目路径,然后执行以下操作:

pip install -r requirements.txt

voase2hg

voase2hg2#

您可以使用pip freeze > requirements.txt生成依赖列表,并使用pip install -r requirements.txt安装所有依赖。

dojqjjoe

dojqjjoe3#

pip默认在大多数情况下都可用于Python。它是用于安装Python包的最常用工具。当作者发布Python包时,它们包含项目元数据(如setup.pysetup.cfgpypoject.toml文件),部分地声明了包的依赖关系,因此pip等打包工具可以在安装包时解析依赖关系。某些项目的源代码中还可能包含一个或多个requirements.txt文件,您可以直接pip收集所需的包IE pip install -r /path/to/requirements.txt
通常来说,几乎所有你可能使用的包都发布在PyPI仓库中,你只需要做pip install <package name>,pip就可以解决所有需要的依赖关系。
还有其他工具可用,这些工具的特点是像锁文件这样更类似于nodejs的锁文件。pipenv是PyPA推荐的用于安装包和管理依赖项的工具之一。它捆绑了与virtualenv、pipfile等相关工具类似的特性。它还提供了与JavaScript世界中的工具类似的功能,例如npmyarn等。

8fq7wneg

8fq7wneg4#

您可以通过以下方式使用conda

conda install --file requirements.txt

字符串

tyu7yeag

tyu7yeag5#

如果要创建一个独立库,请考虑使用setuptools,并定义一个setup.py,该install_requires字段用于库所需的依赖项。范例:

from setuptools import setup

setup(
    name='example.package',
    install_requires=[
        'setuptools',
        'requests>=3.0.0',
        # other requirements
    ],
    # ... and other attributes
)

字符串
如果你试图创建一个开发/构建环境,requirements.txt就足够了,但是通过标准依赖解析,这对于其他Python包是不可用的。
请参阅install_requires vs. Requirement files
此外,请参考Python packaging guide以获得关于如何使用包的更全面的信息集,例如。installation of package(包括pip、virtualenv的使用,这对于设置开发环境很有用),producing a package可以分发(包括在项目的setup.py中放入什么)。

5vf7fwbs

5vf7fwbs6#

在交付一个有依赖关系的程序时,我发现的最快和最好的方法是使用几个简单的步骤。
1.使用pip install pipreqs,它允许运行pipreqs /--directory to your program folder--/,并在程序的文件夹中为您的程序生成requirements.txt文件,其中列出了所有包依赖项。
1.将包含包依赖项的文件夹从python包下载到的地方复制/粘贴到程序的文件夹中(例如..\Python\Python38 -32\Lib\site-packages)。
1.运行pip uninstall -r requirements.txt并运行程序,以确保它在没有安装依赖项的情况下仍然可以工作。

相关问题