Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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_Python 3.x - Fatal编程技术网

如何使用特定版本的python解释器运行脚本,而不在系统上安装脚本?

如何使用特定版本的python解释器运行脚本,而不在系统上安装脚本?,python,python-3.x,Python,Python 3.x,我的代码只能在特定版本的python(64位python 3)上运行,并且安装了一些库。但是,我不想在每台运行python的计算机上安装python的特定版本和库。在不安装特定版本的python和库的情况下,是否仍可以运行它?我列出了我对您的问题的看法。我过去亲自使用过它们,它们都很有效。您可以使用任何一种方法,但在使用任何一种方法之前,请检查利弊,并根据您的问题进行明智的选择(例如,如果您只想尝试Python 2.7中的脚本,(2)和(3)是完美的解决方案,但如果您同时在2.7和3.8中开发,

我的代码只能在特定版本的python(64位python 3)上运行,并且安装了一些库。但是,我不想在每台运行python的计算机上安装python的特定版本和库。在不安装特定版本的python和库的情况下,是否仍可以运行它?

我列出了我对您的问题的看法。我过去亲自使用过它们,它们都很有效。您可以使用任何一种方法,但在使用任何一种方法之前,请检查利弊,并根据您的问题进行明智的选择(例如,如果您只想尝试Python 2.7中的脚本,(2)和(3)是完美的解决方案,但如果您同时在2.7和3.8中开发,(4)或(1)可能是最好的。如果您希望您的客户能够轻松地运行您的应用程序,您可以选择(1))

(1) 你可以查一下Docker。对于特定的Python版本,存在特定的Docker映像。您可以选择运行代码的特定版本。如果需要安装软件包,可以运行
requirements.txt
安装所有软件包,但如果需要安装其他应用程序,可以基于列出的映像之一创建自己的Docker映像

(2) 另一种更具Python风格的方法是使用
virtualenv
,并指定要使用的Python。但是,这也需要下载和解压缩另一个版本的Python,但不需要安装

virtualenv中的相应标志:

discovery:
  discover and provide a target interpreter

  --discovery {builtin}         interpreter discovery method (default: builtin)
  -p py, --python py            target interpreter for which to create a virtual (either absolute path or identifier string) (default: c:\python38-32\python.exe)
(3) 此外,如果您解压缩另一个版本的Python,您只需使用可执行文件的绝对路径即可

(4) 我的最后一个想法是使用
pyenv
,这是一个Python版本管理器。它很容易使用,并且可以在Python版本之间切换,我过去也用过。也检查一下


(5) 例如,您可以将解释器和应用程序打包到单个可执行文件中。我从未使用过这个工具。

实现这一点的典型方法是使用它将Python编译成字节码并生成可执行文件。它还会收集所有依赖项并将它们填充到一个文件夹中。做类似的事情。在某些情况下,如果这对您很重要,Nuitka可以让您的代码运行得更快

所有这些解决方案都会将源.py文件转换为其他文件。如果您想要分发源文件和特定的Python发行版,我不知道该用例是否有特定的项目


我使用PyInstaller将我的应用程序部署到组织中的其他计算机。当我向应用程序添加新功能时,我通常会重建分发文件夹,但只将生成的可执行文件复制到客户端计算机。如果所有不同的库和模块都没有改变,那么这个模型就可以正常工作。如果您更改应用程序中的库或移动到新版本的Python,则需要将整个分发文件夹复制到客户端。

您可能需要查看Dockerd这是否回答了您的问题?