在没有安装库的情况下运行 python 脚本
Posted
技术标签:
【中文标题】在没有安装库的情况下运行 python 脚本【英文标题】:Running python script without installed libraries 【发布时间】:2015-08-21 21:19:15 【问题描述】:我有使用scipy
和numpy
函数的工作Python 脚本,我需要在安装了Python 但没有模块scipy
和numpy
的计算机上运行它。我该怎么做? .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 脚本独立可执行以在没有任何依赖项的情况下运行? [复制]
我已经安装了 OpenCV C++。我可以在不重新安装库的情况下在 Python 中使用它的功能吗?