首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以创建一个独立的文件来导入用pybind创建的python库?

是否可以创建一个独立的文件来导入用pybind创建的python库?
EN

Stack Overflow用户
提问于 2020-07-28 10:12:50
回答 1查看 279关注 0票数 0

我希望我的问题很清楚,如果没有,请告诉我。

我正在使用OpenImageIO的python绑定(pybind11)来处理一些将在数百台计算机上运行的脚本。不幸的是,安装OpenImageIO并使它与我的Python2安装一起工作花费了大量时间。我想知道是否有一种方法可以创建一个文件/文件夹,我可以发送给其他计算机,这样他们就可以简单地用"pip安装文件/文件夹“来安装OpenImageIO模块。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-28 14:10:07

您是否在具有共享文件系统的计算集群上运行脚本?如果运行脚本,则无需为每台计算机创建单独的python安装。最简单的解决方案是在所有机器都可以访问的位置创建一个python环境。在非系统位置创建Python环境的一种简单方法是使用米尼康达。将其安装到共享(网络)位置,并创建供所有计算机使用的环境。

如果您的机器没有共享的文件系统,那么您将需要在所有这些机器上独立地复制环境。在这种情况下,用pip.**做这件事没有简单的方法

但是,如果您可以使用conda,那么有一个非常简单的解决方案。首先,将所需的一切安装到单个conda环境中。然后您可以选择:您可以导出conda包列表,或者简单地将整个conda环境目录复制到其他机器。

OpenImageIO可以从社区开发的conda包存储库conda-forge通道获得。包的名称是py-openimageio。他们已经停止了python-2.7版本的更新,但是旧版本仍然可用。

这是怎么做的。

  1. 安装Miniconda-2.7
  2. 使用python2.7、OpenImageIO和您需要的任何其他包创建一个新环境:
代码语言:javascript
复制
conda create -n jao-stuff -c conda-forge py-openimageio python=2.7
conda activate jao-stuff
python -c "import OpenImageIO; print('It works!')"
  1. 执行下列操作之一: a.在您的环境中导出包列表: conda env出口-n jao- -f jao-Packages.yaml 然后,在其他机器上安装Miniconda,然后使用上一步中的包列表创建环境: conda创建-n jao--文件jao-Packages.yaml 只需将环境中的所有文件复制到其他机器,并直接运行它们。Conda环境是独立的(除了一些低级别的系统库),所以您通常只需将整个程序复制到另一台计算机上,然后运行它,而无需任何安装步骤。 tar czf jao-stuff.tar.gz $(conda info -前缀)/envs/jao 在另一台机器上,将tarball解压缩到任何地方,只运行它包含的python可执行文件: tar xzf jao-stuff.tar.gz jao- -c /bin/python OpenImageIO“导入OpenImageIO;打印(‘它工作!’)

**这是因为OpenImageIO是一个C++项目,有几个C++依赖项,而且它们不提供wheel格式的二进制文件。我不怪他们-- pip不太适合这个用例,即使有轮子。另一方面,Conda正是为这个用例设计的,并且非常适合它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63131768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档