【问题标题】:Is it possible to run python script from another machine without installing imported modules?是否可以在不安装导入模块的情况下从另一台机器运行 python 脚本?
【发布时间】:2018-04-20 04:48:48
【问题描述】:

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

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

谢谢 汕头

【问题讨论】:

  • 没有。你应该安装依赖包。

标签: python module server libraries


【解决方案1】:

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

不推荐:
你可以使用pip 模块来安装类似的东西

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

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

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

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

【讨论】:

  • 我不确定这是个好主意。它将尝试使用由无权访问系统站点包目录的非特权用户运行的系统 python 安装包。 python 包有一些设置阶段,通常缩写为python setup.py install,但最简单的方法是将你的包(比如shanto)放在pypi,然后要求用户pip install shanto 获取它。跨度>
【解决方案2】:

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

pip install -t <dir>

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 2017-08-03
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 2020-03-03
      • 2012-09-22
      • 2013-08-22
      • 1970-01-01
      相关资源
      最近更新 更多