Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何确保始终安装/提供所需的软件包_Python_Package_Virtual Environment - Fatal编程技术网

Python 如何确保始终安装/提供所需的软件包

Python 如何确保始终安装/提供所需的软件包,python,package,virtual-environment,Python,Package,Virtual Environment,我正在用python编写一个脚本,它依赖于几个不同的包和库。当此脚本传输到另一台计算机时,它运行所需的包有时不存在,或者是不具有相同功能并导致脚本失败的旧版本 我曾考虑使用虚拟环境,但我找不到让脚本使用我设计的特定环境的方法,因为它是默认环境,为了使用该环境,用户必须从命令行手动激活它 我还研究了如何检查机器上安装的软件包的版本,如果这些版本不够,请按照下面的说明从脚本中进行更新: 是否有更简单/可靠的方法确保所需的软件包无论在何处运行都始终可用?通常的方法是创建一个安装脚本,并让它管理您的依

我正在用python编写一个脚本,它依赖于几个不同的包和库。当此脚本传输到另一台计算机时,它运行所需的包有时不存在,或者是不具有相同功能并导致脚本失败的旧版本

我曾考虑使用虚拟环境,但我找不到让脚本使用我设计的特定环境的方法,因为它是默认环境,为了使用该环境,用户必须从命令行手动激活它

我还研究了如何检查机器上安装的软件包的版本,如果这些版本不够,请按照下面的说明从脚本中进行更新:


是否有更简单/可靠的方法确保所需的软件包无论在何处运行都始终可用?

通常的方法是创建一个安装脚本,并让它管理您的依赖关系。然后,当您将项目移动到新环境时,安装程序将检查是否存在所有依赖项。 我建议您查看设置工具:


如果您不想在需要在新的地方使用脚本时安装依赖项,那么可以将脚本打包到Docker容器中

通常的方法是创建一个安装脚本,并让它管理您的依赖项。然后,当您将项目移动到新环境时,安装程序将检查是否存在所有依赖项。 我建议您查看设置工具:


如果您不想在需要在新的地方使用脚本时安装依赖项,那么可以将脚本打包到Docker容器中

如果问题是确保所需的软件包在新环境或虚拟环境中可用,您可以使用pip生成requirements.txt,并在版本控制中进行检查,或者使用工具为您执行此操作,如

如果您希望手动生成requirements.txt,您应该:

  • 使用
    pip
  • 键入
    pip freeze>requirements.txt
    生成
    requirements.txt
    文件
  • 检查源代码管理软件中的
    requirements.txt

  • 当您需要设置新环境时,请使用
    pip install-m requirements.txt

    如果问题是确保所需的软件包在新环境或虚拟环境中可用,您可以使用pip生成requirements.txt并在版本控制中检查它,或者使用工具为您执行此操作,如

    如果您希望手动生成requirements.txt,您应该:

  • 使用
    pip
  • 键入
    pip freeze>requirements.txt
    生成
    requirements.txt
    文件
  • 检查源代码管理软件中的
    requirements.txt

  • 当您需要设置新环境时,请使用
    pip install-m requirements.txt

    我一直使用的解决方案是在脚本所在的文件夹中包含一个自定义库(包含所有所需软件包的文件夹),我只需从那里导入它们:

    from Customlib import pkg1, pkg2,...
    
    只要自定义库和脚本保持在同一文件夹中,它将始终能够访问正确的包和这些包的正确版本


    我不确定这个解决方案到底有多强大,或者如果它从一台机器传递到另一台机器,可能会产生什么错误,但目前看来这似乎是可行的。

    我一直使用的解决方案是在我的脚本文件夹中包含一个自定义库(包含我所需的所有包的文件夹),我只是从那里导入它们:

    from Customlib import pkg1, pkg2,...
    
    只要自定义库和脚本保持在同一文件夹中,它将始终能够访问正确的包和这些包的正确版本


    我不确定这个解决方案到底有多健壮,或者如果它从一台机器传递到另一台机器,可能会产生什么错误,但目前看来这似乎是可行的。

    这似乎是一个普遍的好做法,但似乎仍有人必须手动运行pip命令才能运行脚本。此外,requirements.txt还必须插入到新机器上的源代码管理软件中,对吗?是的,您需要为每个环境手动运行该命令,这对开发很好。至于源代码管理,这并不是真的必要,但这取决于您的需要。这似乎是一个普遍的好做法,但似乎仍然需要有人手动运行pip命令才能运行脚本。此外,requirements.txt还必须插入到新机器上的源代码管理软件中,对吗?是的,您需要为每个环境手动运行该命令,这对开发很好。至于源代码控制,它不是真的必要,但这取决于您的需要。