如何隐藏或相对显示在conda-meta文件夹内的文件中的路径?

时间:2019-03-29 17:27:07

标签: anaconda conda relative-path environment absolute-path

在构建像这样的conda环境时

conda create --prefix env python=3.6.5

一些绝对路径出现在conda-meta文件夹中的某些json文件中。我该如何避免呢?我只想在这里使用相对路径,或者只想完全隐藏它们。有没有办法做到这一点?他们是强制性的吗?请参见extracted_package_dirsourcepackage_tarball_full_path属性:

{
"arch": "x86_64",
"build": "py36_0",
"build_number": 0,
"channel": "https://repo.anaconda.com/pkgs/main/win-64",
"constrains": [],
"depends": [
    "python >=3.6,<3.7.0a0"
],
"extracted_package_dir": "C:\\Users\\UserName\\AppData\\Local\\conda\\conda\\pkgs\\certifi-2019.3.9-py36_0",
"features": "",
"files": [
    "Lib/site-packages/certifi-2019.03.09-py3.6.egg-info",
    "Lib/site-packages/certifi/__init__.py",
    "Lib/site-packages/certifi/__main__.py",
    "Lib/site-packages/certifi/__pycache__/__init__.cpython-36.pyc",
    "Lib/site-packages/certifi/__pycache__/__main__.cpython-36.pyc",
    "Lib/site-packages/certifi/__pycache__/core.cpython-36.pyc",
    "Lib/site-packages/certifi/cacert.pem",
    "Lib/site-packages/certifi/core.py"
],
"fn": "certifi-2019.3.9-py36_0.tar.bz2",
"license": "ISC",
"link": {
    "source": "C:\\Users\\UserName\\AppData\\Local\\conda\\conda\\pkgs\\certifi-2019.3.9-py36_0",
    "type": 1
},
"md5": "e1faa30cf88c0cd141dfe71e70a9597a",
"name": "certifi",
"package_tarball_full_path": "C:\\Users\\UserName\\AppData\\Local\\conda\\conda\\pkgs\\certifi-2019.3.9-py36_0.tar.bz2",
"paths_data": {
    "paths": [

[...]

如果删除整个文件夹,环境将变得无用,并且我无法再激活它来安装,更新或删除新软件包。

我想这样做将环境封装在一个应用程序中,并且我不想在最终用户的计算机中使用原始的绝对路径。

我的用例

我正在开发一个使用龙卷风服务器(使用python)的电子应用程序

当前,我正在使用electron-builder将环境添加到安装程序中,并且运行良好,但是一个缺点是我在上面评论的conda-meta文件夹。我现在要做的是在要安装时手动将其删除。

2 个答案:

答案 0 :(得分:0)

这可能会破坏conda。并未将其视为相对路径。如果您告诉我们有关您的用例的更多信息,也许我们可以提供帮助。您是否要重新分发已安装的环境?您看到过“构造函数”或“ conda-pack”项目吗?

答案 1 :(得分:0)

最后,我找到的最佳解决方案是使用electron-builder创建最终安装程序时忽略该文件夹。

因此,我已应用指令extraResources来添加conda环境(文件夹conda-meta除外)。并且我添加了过滤器"!conda-meta${/*}",其含义已说明here

  

请记住,!doNotCopyMe/**/*doNotCopyMe目录中的文件匹配,但与目录本身不匹配,因此将创建空目录。解决方案-使用宏${/*},例如!doNotCopyMe${/*}

package.json文件中的结果:

"extraResources": [
    {
        "from": "../env",
        "to": "env",
        "filter": [
            "**/*",
            "!*.pyc",
            "!conda-meta${/*}"
        ]
    }
],