在构建像这样的conda环境时
conda create --prefix env python=3.6.5
一些绝对路径出现在conda-meta
文件夹中的某些json文件中。我该如何避免呢?我只想在这里使用相对路径,或者只想完全隐藏它们。有没有办法做到这一点?他们是强制性的吗?请参见extracted_package_dir
,source
或package_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
文件夹。我现在要做的是在要安装时手动将其删除。
答案 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${/*}"
]
}
],