使用 Python 库而不在全局安装它们
Using Python libraries without installing them globally
我有一个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/
?
您想使用 virtualenv
和 virtualenvwrapper
。这些是为 Python 程序创建非全局环境的非常常见和广泛使用的方法。
这是一个很好的介绍:
我使用的解决方案是获取脚本的目录(例如:os.path.dirname(__file__)
),然后在添加到sys.path
时使用该目录的绝对路径。
我有一个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/
?
您想使用 virtualenv
和 virtualenvwrapper
。这些是为 Python 程序创建非全局环境的非常常见和广泛使用的方法。
这是一个很好的介绍:
我使用的解决方案是获取脚本的目录(例如:os.path.dirname(__file__)
),然后在添加到sys.path
时使用该目录的绝对路径。