繁体   English   中英

是否可以在不安装导入模块的情况下从另一台机器运行 python 脚本?

[英]Is it possible to run python script from another machine without installing imported modules?

嗨,我有一个在笔记本电脑上开发的 Python(3.6 版)脚本。 但我需要从另一台服务器运行脚本。 我在服务器上安装了相同版本的 Python,但没有安装在我的脚本中导入的模块。 不过,这些模块安装在我的笔记本电脑上。

是否可以从服务器运行 puthon 脚本而不在服务器中安装导入的模块?

谢谢汕头

确实,从技术上讲,您确实需要安装依赖包 但是,您可以通过在代码中包含前奏来以编程方式安装它们,以检查这些包,如果它们不可用,则使用 pip 安装它们。

不推荐:
您可以使用pip模块安装类似

try:
    import package1
except ModuleNotFoundError:
    import pip    
    pip.main(['install', pandas])
    import package1

但是,不建议采用这种方式,因为(除其他原因外) pip不是线程安全的(有关完整原理,请参见此处)。

推荐方式: subprocess
推荐的方法是使用subprocess (标准)模块

try:
    import package1
except ModuleNotFoundError:
    import subprocess
    import sys    
    subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'package1']) 
    import package1

您无法在服务器上安装软件包的原因是什么? 您可以尝试使用 virtualenv 或在与代码相同的文件夹中安装所需的包并将整个文件夹部署到服务器:

pip install -t <dir>

我认为您可以使用 pynistaller 或 py2exe 或任何其他包将 python 脚本转换为可执行文件。 创建可执行文件(.exe)文件后,您可以运行该文件而无需安装 python 模块

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM