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

时间:2018-04-20 04:48:48

标签: python module server libraries

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

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

由于 Shanto

3 个答案:

答案 0 :(得分:0)

这是真的,从技术上讲,你确实需要安装依赖包。但是,您可以以编程方式安装它们,方法是在代码中包含一个检查这些软件包的前缀,如果它们不可用则使用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

答案 1 :(得分:0)

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

pip install -t <dir>

答案 2 :(得分:0)

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