【发布时间】:2015-03-07 01:11:12
【问题描述】:
我有一个python脚本,想部署到各种PC上运行测试,需要用到第三方库pysnmp。由于我不想在每台目标PC上手动安装pysnmp,我想我可以将pysnmp(和相关的)eggs放在eggs/目录中,然后将其附加到python路径之前导入:
import sys
sys.path.append("./eggs/pysnmp-4.2.5-py3.4.egg")
sys.path.append("./eggs/pyasn1-0.1.7-py3.3.egg")
from pysnmp.entity.rfc3413.oneliner import cmdgen
只要我在包含eggs/ 的目录中执行脚本,它就会按预期工作,但是它看起来相当手动和混乱。有没有一种可移植的方式告诉 python 在我想要导入的任何时候搜索[path to module]/eggs/?
【问题讨论】:
-
您是否尝试过使用在运行时根据
__file__的目录组件计算的绝对路径? -
为什么不在每台机器上创建一个 virtualenv 并将
pysnmp和你的模块安装到每个 virtualenv 中呢?您可以编写一个简单的脚本来执行此操作,这样您就无需“手动”执行操作。 -
@BryanOakley 谢谢,我没有尝试过,是的,它有效并解决了相对路径的问题。
-
@jme 重点是,我不想“设置”每台目标 PC ......我只想“开火然后忘记”。我可以创建一个预先安装了
pysnmp的virtualenv,然后将那个推送到目标PC吗? -
“设置”的数量确实很少。你可以制作一个 bash 脚本来制作一个 virtualenv,安装
pysnmp和你的代码大概三行。将 this 推送到每台机器并运行它。非常便携。
标签: python pythonpath egg