使用脚本中的 Python 包而不安装它
Use a Python package from a script without installing it
我有一个 python 脚本,它将由系统 python(在 OSX /usr/bin/python
上)执行。这个脚本使用了一个外部包(在我的例子中 PyYaml)。
如何在不 pip
将其安装到系统 python 的情况下提供软件包。我也不想为此脚本创建虚拟环境,因为该脚本也适用于 运行 在其他 "vanilla" OSX 机器上。
我正在考虑在脚本所在的同一路径下创建一个目录,"dumping" 外部包也在那里。但是以什么形式呢?我必须在我的脚本中做什么,才能 "sees" 本地转储包?只需修改 sys.path
?
您只需将 pyYaml 的 *.py
文件复制粘贴到您的脚本目录中,然后像导入您自己的模块一样导入它们。这不是最漂亮的解决方案,但它确实有效。
如果你打算使用 C 后端,那就更难了。您要么需要确保您的安装程序正确编译它们,要么使用编译的 C 模块制作依赖于平台的发行版。但是那些是为了速度和纯 Python 代码就足够了。
作为 Synedraacus's 的增强: (*)
您可以将 PyYAML 的整个 yaml
子目录复制到您的脚本目录中(如果您使用 Python 2 和 lib3/yaml
,它位于 PyYAML zip 文件 lib/yaml
中Python 3).然后你可以在你的代码中使用它,就像你安装了 PyYaml pip
一样。随便写:
import yaml
这当然只有在您不想使用 C 后端时才有效。
(*) 我试图将这个细节添加到 Synedraacus 的回答中,但我的编辑 got rejected。因此,我将此增强功能添加为单独的答案。
我有一个 python 脚本,它将由系统 python(在 OSX /usr/bin/python
上)执行。这个脚本使用了一个外部包(在我的例子中 PyYaml)。
如何在不 pip
将其安装到系统 python 的情况下提供软件包。我也不想为此脚本创建虚拟环境,因为该脚本也适用于 运行 在其他 "vanilla" OSX 机器上。
我正在考虑在脚本所在的同一路径下创建一个目录,"dumping" 外部包也在那里。但是以什么形式呢?我必须在我的脚本中做什么,才能 "sees" 本地转储包?只需修改 sys.path
?
您只需将 pyYaml 的 *.py
文件复制粘贴到您的脚本目录中,然后像导入您自己的模块一样导入它们。这不是最漂亮的解决方案,但它确实有效。
如果你打算使用 C 后端,那就更难了。您要么需要确保您的安装程序正确编译它们,要么使用编译的 C 模块制作依赖于平台的发行版。但是那些是为了速度和纯 Python 代码就足够了。
作为 Synedraacus's
您可以将 PyYAML 的整个 yaml
子目录复制到您的脚本目录中(如果您使用 Python 2 和 lib3/yaml
,它位于 PyYAML zip 文件 lib/yaml
中Python 3).然后你可以在你的代码中使用它,就像你安装了 PyYaml pip
一样。随便写:
import yaml
这当然只有在您不想使用 C 后端时才有效。
(*) 我试图将这个细节添加到 Synedraacus 的回答中,但我的编辑 got rejected。因此,我将此增强功能添加为单独的答案。