【发布时间】:2017-03-10 07:53:59
【问题描述】:
我有一个 python 脚本,它将由系统 python 执行(在 OSX /usr/bin/python 上)。这个脚本使用一个外部包(在我的例子中是PyYaml)。
如何在没有pip-将其安装到系统 python 的情况下提供包。我也不想为这个脚本创建一个虚拟环境,因为这个脚本也可以在其他“vanilla”OSX 机器上运行。
我正在考虑在脚本所在的同一路径下创建一个目录,并在那里“转储”外部包。但以什么形式?我必须在我的脚本中做什么,以便它“看到”本地转储的包?修改sys.path就行了?
【问题讨论】:
-
有时我只是将“源包”(.tar.gz、.zip 等)(在你的情况下我认为是 PyYaml)下载到任何目录然后将该目录附加到
$PYTHONPATH环境变量(取决于操作系统)。在 Mac/Linux 上,我只设置了export PYTHONPATH=$PYTHONPATH:<path_to_python_packages_directory>,重新加载环境。然后在 python 中“import the_package”。不幸的是,对于一些依赖于 CPython 的包,或转到操作系统级别的“C”源文件,这是不可能的,或者很少工作,但对于大多数 python 包来说是这样。 -
我用
pyYaml试过了,它似乎可以工作(我可以导入它),但是那个包中有一些“C”源文件,所以它可能无法按预期工作。 -
@downshift 谢谢你。 应该可以只使用 PyYaml 的
py-文件,因为根据 doco,PyYaml 包含“纯 Python 和基于快速 LibYAML 的解析器和发射器”(pyyaml.org/wiki/PyYAML)。所以只要我不从yaml导入CLoader和CDumper我应该没问题。 -
不错不错,听起来不错