在没有安装库的情况下运行 python 脚本

Posted

技术标签:

【中文标题】在没有安装库的情况下运行 python 脚本【英文标题】:Running python script without installed libraries 【发布时间】:2015-08-21 21:19:15 【问题描述】:

我有使用scipynumpy 函数的工作Python 脚本,我需要在安装了Python 但没有模块scipynumpy 的计算机上运行它。我该怎么做? .pyc 是答案还是我应该做一些更复杂的事情?

注意事项:

我不想使用py2exe。我知道,但它不适合这个问题。 我已经阅读了这些问题(What is the difference between .py and .pyc files?、Python pyc files (main file not compiled?))与这个问题有明显的联系,但由于我是物理学家,而不是程序员,我完全迷路了。

【问题讨论】:

为什么不能在新环境中安装这些模块? 当然可以,但我对如何不这样做很感兴趣。 没有这些库是行不通的。这与.pyc 文件无关。 如何运行缺少依赖项的脚本?即使您跳过导入此类库的失败并继续,最终您也会无法执行某些命令。 并非总是可以在计算机上安装软件库(例如,如果雇主不授予其员工管理权限)。因此希望打包所有必要的代码,以便它可以在 python 解释器上运行,而不依赖于外部依赖。 【参考方案1】:

看看Nuitka。如果您能够编译您的代码(不一定是可能或简单的任务),您将得到您想要的。

【讨论】:

【参考方案2】:

Python 首先将程序“编译”成字节码,然后通过解释器抛出该字节码。

因此,如果您的代码都是 Python 代码,您将能够一次性生成字节码,然后让 Python 运行时使用它。事实上,我见过这样的项目,开发人员只是查看了字节码规范,并实现了一个字节码解析引擎。它非常轻巧,因此可用于例如“芯片上的 Python”等。

问题来自未完全用 Python 编写的外部库(例如 numpy、scipy)。

Python 提供了一个 C-API,允许您创建(使用 C/C++ 代码)在它看来是 Python 对象的对象。这对于加速、与硬件交互、使用 C/C++ 库非常有用。

【讨论】:

用 Python 编写的外部库也是一个问题,因为您的应用程序的字节码不包含它们。【参考方案3】:

这是不可能的。

pyc-file 只不过是编译成字节码的 python 文件。它确实包含此文件导入的任何模块!

此外,numpy 模块是用 C(和一些 Python)编写的扩展。其中很大一部分是在运行时加载到 Python 中的共享库。你需要这些才能让 numpy 工作!

【讨论】:

以上是关于在没有安装库的情况下运行 python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Python 脚本独立可执行以在没有任何依赖项的情况下运行? [复制]

Linux环境下的Python配置,必备库的安装配置

我已经安装了 OpenCV C++。我可以在不重新安装库的情况下在 Python 中使用它的功能吗?

如何在不再次运行配置脚本/cmake 的情况下修改安装路径

如何在没有共享库的情况下使用 GMP、MPFR、MPC、ELF 逐个安装 GCC?

Python下opencv库的安装过程与一些问题汇总