【问题标题】:how to run python script on a machine where I can't install the required package?如何在无法安装所需软件包的机器上运行 python 脚本?
【发布时间】:2014-06-17 02:11:40
【问题描述】:

我想在远程 linux 机器上运行 python 脚本。 该脚本需要一个包networkx。但是,我无法在远程机器上安装python包,我该怎么办?

【问题讨论】:

  • 使用 Virtualenv 并在本地安装。它不需要任何特权。

标签: python linux python-module


【解决方案1】:

一般有四个选项(可以存在更多):

安装到用户配置文件中

$ pip install --user networkx

这不需要root权限并安装到用户特定的目录中。

安装到虚拟环境中

$ virtualenv env
$ cd env
$ source bin/activate
$ pip install networkx

注意,没有--user 选项。

当你需要启动程序时,你需要使用 env/bin 目录下的 python,这会自动使用你之前设置的 virtualenv。 (无需致电activeate

安装到本地子目录

你可以把需要的包的egg或者源代码放到本地目录中,并操作sys.path来包含它,然后它就会从那里导入。然而,这并不容易,事实上它和 virtualenv 提供的一样。

使用 zc.buildout

zc.buildout 工具是 virtualenv 的替代解决方案。您可以将所有内容保存在一个目录树中,从这里运行。我过去多次使用这个解决方案,但与virtualenv相比它有点过于复杂

【讨论】:

  • 我尝试了第一个,我将networkx的.egg文件放在远程机器的主目录中,但我无法安装它,还有更多详细信息吗?谢谢!
  • 顺便说一句,当我运行python脚本(可能运行很长时间)时,我需要使用time&甚至screen。如果我使用virtualenv,会不会有问题?谢谢!
  • @lily 从 egg 安装到用户配置文件:将 egg 复制到某处,cd 到该目录并运行:$ pip install networkx-1.8.1-py2.7.egg。通过$ python -c "import networkx"python 对其进行测试。如果它没有抱怨,你就安装了它。也可以通过>>> import networkx 从 ipython 或 python 的交互式控制台对其进行测试。然后可以删除您用于安装的 egg 文件。
  • @illy 如果解决方案适用于python,它将适用于virtualenv
【解决方案2】:

使用py2execython.py 文件转换为.pyc 文件..

【讨论】:

  • 不明白,能不能详细点?像程序?谢谢
猜你喜欢
  • 2011-04-25
  • 2017-05-22
  • 1970-01-01
  • 2020-01-15
  • 2022-01-13
  • 2017-08-22
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
相关资源
最近更新 更多