如何隐藏或相对 conda-meta 文件夹中文件中出现的路径?



当构建这样的 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文件夹。我现在要做的是在我想制作安装程序时手动删除它。

这可能会破坏康达。 它不是为了将这些视为相对路径而编写的。 如果您告诉我们更多有关您的用例的信息,也许我们可以提供帮助。 您是否正在尝试重新分发已安装的环境? 你看过"构造函数"或"conda-pack"项目吗?

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

所以我应用指令extraResources添加除文件夹conda-meta之外的 conda 环境。并且我添加了过滤器"!conda-meta${/*}",含义在这里解释

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

package.json文件中的结果:

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

最新更新