我有一个python脚本,它将由系统python执行(在OSX /usr/bin/python
上)。这个脚本使用一个外部包(在我的例子中为PyYaml)。使用脚本中的Python包而不安装它
如何在没有pip
的情况下提供软件包 - 将其安装到系统python中。我不想为这个脚本创建一个虚拟环境,因为脚本也可以在其他“vanilla”OSX机器上运行。
我正在考虑在脚本所在的同一路径下创建一个目录,并在那里“倾销”外部软件包。但是以什么形式?我在脚本中必须做些什么,才能“看到”本地倾销的软件包?只需修改sys.path
?
有时我已经成功地将“源包”(.tar.gz,.zip等)(在你的情况下,我认为它是PyYaml)下载到任何目录,然后将该目录追加到'$ PYTHONPATH'环境变量(取决于操作系统)。在Mac/Linux上,我只需设置'export PYTHONPATH = $ PYTHONPATH:',重新加载环境。然后在Python中“导入the_package”。不幸的是,对于一些依赖于CPython的软件包,或者是进入操作系统级别的“C”源文件,这是不可能的,或者很少有效,但是对于大多数python软件包。 –
davedwards
我用'pyYaml'试过了,看起来好像有效(我可以导入它),但是那个包里有一些“C”源文件,所以它可能无法按预期工作。 – davedwards
@downshift感谢你。它*应该可以只使用PyYaml的''py'-文件,因为PyYaml根据doco包含“纯Python和基于快速LibYAML的解析器和发射器”(http://pyyaml.org/wiki/PYYAML) 。所以,只要我不从'yaml'导入'CLoader'和'CDumper',我应该没问题。 – halloleo