如果这不是正确的网站,我深表歉意。如果不是,请告诉我。
这是我正在尝试的背景。我们正在开发一系列将要投入生产的聊天机器人。它们每个都将在Anaconda的环境中运行。但是,我们的设置使用tensorflow,后者使用gcc进行编译,并且合规性禁止编译器投入生产。此外,在生产中使用pip或conda安装程序也违反了合规性规则。
作为解决此问题的一种方法,我试图将Anaconda 3文件夹压缩为tar,然后将其移至prod,同时已编译并安装了所有依赖项。但是,环境之间的帐户具有不同的名称,因此这需要我进入bin文件夹(至少;我确定也需要在lib和pckg文件夹中更改它们)并用于sed -i
重命名硬编码路径,从点\home\<dev account>\anaconda
到\home\<prod account>\anaconda
,虽然这似乎是工作,其也是一个不错的办法裂伤我安装。
我的问题如下:
sed -i
在这些路径上使用?我已经读过Anaconda本身不支持此功能,但是我希望您的输入。~
。sed
,我应该注意哪些重要事项?例如,当我使用时grep <dev account> *
,我会将一些文件列为binary file matches
。我需要做一些特别的事情来改变这些吗?再一次,我很清楚我应该只在生产机器上创建一个新的Anaconda安装,但这根本不是一个选择。
编辑:到目前为止,我已经更改了/ etc中的conda.sh和conda.csh文件,以及根目录下的conda,激活和停用文件。因此,我可以在新用户帐户上激活和停用我的环境。另外,我还更改了机器人环境下bin文件夹中的文件。现在,我正在尝试训练该机器人以测试它是否有效,但是它一直失败,并指出列表中不存在自定义操作。不过,我认为这与此无关。
Edit2:我已经确认我得到的错误与此无关。为了使bot能够与Anaconda的移植版本一起正常工作,我所要做的就是更改/ etc中的conda.sh和conda.csh文件,因此它们到python的路径使用〜,对activate和停用/ bin中的文件,然后将/ bin中的conda文件中的shebang行更改为使用实际帐户名。这样,/ bin和lib中的所有其他文件仍会在其shebang行中使用旧帐户名以及其他使用该路径的变量,但这些bot仍能按预期工作。依我所有的权利,我认为这不起作用,但确实如此。
Anaconda对路径名不满意。它们显然已插入脚本中,但也可能会插入二进制文件中。我想到的一些方法是:
在生产中使用Docker映像。构建图像时:
将Anaconda安装到开发或构建系统的目录中 \home\<prod account>\anaconda
。即使帐户不同,也应该有一种在相同位置创建用户可写目录的方法。
\opt\anaconda
在所有环境中将Anaconda安装到目录中。或其他不包含用户名的目录。如果无法在用户主目录之外获取目录,请在指向用户主目录的固定路径上协商符号链接或联结(mklink.exe / d或/ j)\opt\anaconda
。
使用目录在Docker容器内构建\home\<prod account>\anaconda
,然后导出存档并在没有Docker的生产系统上运行。
将整个应用程序捆绑为预编译的Anaconda软件包,以便无需编译器即可安装。
conda install
在生产中甚至对此都不满意。但这可以简化构建Docker映像而不会造成挤压。我一直在Docker中构建Anaconda环境,并在生产中的裸机上运行它们。但是,我们始终确保路径在环境之间相同。我发现对路径进行整顿甚至无法尝试。当我们到处切换到Docker映像时,生活变得更加简单。但是,如果您必须继续使用sed
...,祝您好运:-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句