【问题标题】:Can Anaconda be packaged for a portable zero-configuration install?可以打包 Anaconda 以进行便携式零配置安装吗?
【发布时间】:2017-02-20 10:18:44
【问题描述】:

我想将 Python 部署给我组织中的非程序员,这样安装过程就完全包括从 Perforce 同步一个目录,并且可能运行一个设置环境变量的批处理文件。

是否可以将 Miniconda 打包成只需复制目录即可“安装”的方式?它的安装程序是做什么的?

这样做的原因是我想通过为我们的艺术家提供可以从命令行运行的 Python 脚本来自动执行某些任务。但是我需要将解释器安装到他们的机器上,而无需运行任何类型的安装程序或卸载程序,或者任何可能以非幂等方式失败的进程。设置环境变量的批处理文件很好,因为它是幂等的。安装程序可能会在中途失败并将工作站置于需要干预才能修复的状态。

特别是,为每个人的安装添加一个库应该包括我在办公桌上使用 conda,将随后的目录检查到 P4,然后让艺术家使用他们的下一个 p4 sync 自动选择它。

我查看了 WinPython,但 1.4GB 太大了。可移植 Python 已失效。

我们是一家专门的 Windows 商店,因此不需要 Linux 或 Mac 便携式解决方案。

【问题讨论】:

标签: python anaconda conda portability miniconda


【解决方案1】:

您可以使用 silent install mode 创建完全可移植的 Miniconda 安装程序(对于 v.4.3.21 windows x64 为 250MB)。

Miniconda3-latest-Windows-x86_64.exe /InstallationType=JustMe /AddToPath=0 /RegisterPython=0 /NoRegistry=1

(找到解决方案in this issue

【讨论】:

  • 我认为 Crashworks 是在谈论 Anaconda(Python 发行版)而不是 Miniconda。
  • @Royi,好吧,这个问题明确提到了 Miniconda "Is it possible to package up Miniconda [...]" 所以我不明白你的评论。 BTW Miniconda 与 Anaconda 相同,但包含用于 Python 发行版的最少软件包([...] Miniconda, a mini version of Anaconda that includes only conda and its dependencies.,来自conda docs
  • 我使用.\Miniconda2-latest-Windows-x86_64.exe /InstallationType=JustMe /AddToPath=0 /RegisterPython=0 /S /D=P:\tools\miniconda2 在我的P: 驱动器上安装了Miniconda。但是,conda info 显示某些文件/文件夹仍然指向我的C: 驱动器。如何让 Miniconda 100% 独立且便携?
  • @Jack 你试过/NoRegistry=1 吗?文档中没有提到这一点,但应该允许使其可移植。
  • 我在用户的主目录中完全删除了 conda 及其所有剩余部分,并使用 .\Miniconda2-latest-Windows-x86_64.exe /InstallationType=JustMe /AddToPath=0 /RegisterPython=0 /NoRegistry=1 /S /D=P:\tools\miniconda2 | Out-Null 重新安装。我假设结果是可移植的,但是,conda info 在我的用户主文件夹中仍然包含三个位置:package cache : P:\tools\miniconda2\pkgs C:\Users\q367465\AppData\Local\conda\conda\pkgs envs directories : P:\tools\miniconda2\envs C:\Users\q367465\AppData\Local\conda\conda\envs C:\Users\q367465\.conda\envs
【解决方案2】:

既然您提到 WinPython 作为一个选项,但说您因为“太大”而将其驳回:

WinPython 现在包含一个“零”版本,每个版本都删除了几乎所有的膨胀(相当于 Miniconda 和 Anaconda 之间的关系)。我相信包含 WinPython-64bit v3.6.3.0Zero 版本的文件夹大小约为 50-100MB。

【讨论】:

  • 它与 Anaconda 便携式安装有何关系?我更喜欢任何合理的解决方案,如果存在的话,但我认为应该清楚地说明这种关系,以便每个人都能理解。
  • @WebComer:嗯,问题包括“我查看了 WinPython,但在 1.4GB 时它太大了”。我告诉他们,情况不再如此。
【解决方案3】:

这是 4 年前(截至 2020 年 11 月)发布的一个老问题,但问题仍然存在。 我最近遇到了它,同时我也在寻找与 @Crashworks 当时完全相同的情况的解决方案。

以下是我的观察。我只会谈论 Windows 平台的角度。通常,这种对便携式开发解决方案的需求出现在开发人员需要经常在系统之间切换或需要能够从便携式驱动器上的一台机器备份其整个开发设置并能够在另一台机器上运行相同的情况下在设置开发环境上浪费的时间最少。可能还有其他令人信服的情况,但上面提到的这种情况似乎是主要的情况。

My setup - 
    I have a folder called C:\DEB_pythons\anaconda3
    I installed Anaconda3 in 'Silent Mode' using the command string 
start /wait "" Anaconda3-2020.07-Windows-x86_64.exe /InstallationType=JustMe /AddToPath=0 /RegisterPython=0 /NoRegistry=1 /S /D=C:\DEB_pythons\anaconda3

安装很顺利,正如预期的那样,路径变量和系统注册表中没有关于 Anaconda3 的条目,除了一个无关紧要的注册表条目,如下所示

[key]
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore\44be3c1f_0
REG_SZ
[key name]
(Default)
[key value]
{2}.\\?\hdaudio#func_01&ven_14f1&dev_50f4&subsys_103c8080&rev_1001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineouttopo/00010001|\Device\HarddiskVolume3\DEB_pythons\anaconda3\python.exe%b{00000000-0000-0000-0000-000000000000}

很明显,如果 Anaconda 在另一台可以尝试运行相同设置的机器上不存在,这不会对它的功能产生太大影响。

到目前为止一切顺利。 现在让我们打开 Anaconda3 Navigator 并检查子组件是否运行良好。 我们有 Spyder、Jupiter Lab、Jupyter、IPython Console 等。所有这些都打开并运行良好,这是个好消息。 看起来我们已经实现了所需的可移植性。 但现实远非如此。

满足可移植性的基本要求是所有程序组件、用户数据、存储设置、配置和其他支持文件的位置应位于“用户定义”文件夹位置下。强>

现在,在 Anaconda 的当前设置下,这在很多方面都被打破了。

一个

如果我们使用命令“conda info”检查 Anaconda 的内部设置,我们可以看到已经引用了两组位置,例如 -

user config file : C:\Users\ddutta8\.condarc     /// it exists
populated config files : C:\Users\ddutta8\.condarc
base environment : C:\DEB_pythons\anaconda3  (writable)
package cache : C:\DEB_pythons\anaconda3\pkgs   /// it contains all the packages
                C:\Users\ddutta8\.conda\pkgs    /// this folder does not exist
                C:\Users\ddutta8\AppData\Local\conda\conda\pkgs   /// this folder does not exist
envs directories : C:\DEB_pythons\anaconda3\envs   /// it is empty
                   C:\Users\ddutta8\.conda\envs    /// this folder does not exist
                   C:\Users\ddutta8\AppData\Local\conda\conda\envs    /// this folder does not exist

"C:\Users\ddutta8" 基本上是扩展%USERPROFILE% 环境变量的结果。 此路径的非常参考,即当前用户的配置文件文件夹优于此静默安装的可移植性。 为了实现真正的可移植性,Anaconda3 的所有方面都应该保留在根文件夹中,即 "C:\DEB_pythons\anaconda3" (就我而言) 应用程序应该要求用户设置存储设置、配置和其他支持文件的位置。

“C:\Users\ddutta8.condarc”的内容很简单但很重要,但它在安装文件夹之外,用户无法控制它的位置。

ssl_verify: true
channels:
  - defaults

两个

如果我们在整个 Anaconda3 安装文件夹中搜索字符串 %USERPROFILE% 的存在,则有 167 个命中,这意味着在 167 个文件中,对 %USERPROFILE% 文件夹的引用已被硬编码,而不是对数据的引用位置由用户提供。 这个 在 anaconda.com 分发的当前设置下无法更改。 因此,您会在 %USERPROFILE% 文件夹下找到以下文件夹-

.conda
.ipynb_checkpoints
.ipython
.jupyter
.matplotlib
.spyder-py3

它们被在 Anaconda3 下打开的所有应用程序引用 - Spyder、Jypyter Lab 等。它们包含无法引用的设置、配置和用户数据,即使将它们逐个文件夹复制到便携式驱动器,然后复制到新机器。

三个

安装程序还会在该位置创建 6 个启动器

C:\Users\ddutta8\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)

这些必须用于启动 Anaconda Navigator、Spyder IDE、Jupyter Notebook 等应用程序。 它们必须在其他地方作为批处理文件重新创建,以消除对 %USERPROFILE% 文件夹的依赖。

要使 Anaconda3 真正可移植,供应商必须创建一个新的安装程序,该安装程序将向用户请求一个位置来存储用户数据、设置和配置,或者路径应该作为参数提供静默类型安装或安装程序应将用户数据存储在安装根文件夹下的专用文件夹中[VSCode 成功遵循的方法] 并且 Anaconda3 下的所有应用程序必须引用此用户提供的位置而不是 %USERPROFILE % 位置。

仅供感兴趣 - 这是我收到的所有 167 次点击的列表 -

Name    Location
    
curl.exe    C:\DEB_pythons\anaconda3\Library\bin\
curl.exe    C:\DEB_pythons\anaconda3\pkgs\curl-7.71.1-h2a8f88b_1\Library\bin\
pandoc-citeproc.exe C:\DEB_pythons\anaconda3\pkgs\pandoc-2.10-0\Scripts\
pandoc-citeproc.exe C:\DEB_pythons\anaconda3\pkgs\pandoc-2.10-0\Scripts\
pandoc-citeproc.exe C:\DEB_pythons\anaconda3\Scripts\
pandoc-citeproc.exe C:\DEB_pythons\anaconda3\Scripts\
pandoc.exe  C:\DEB_pythons\anaconda3\pkgs\pandoc-2.10-0\Scripts\
pandoc.exe  C:\DEB_pythons\anaconda3\pkgs\pandoc-2.10-0\Scripts\
pandoc.exe  C:\DEB_pythons\anaconda3\Scripts\
pandoc.exe  C:\DEB_pythons\anaconda3\Scripts\
qmake.exe   C:\DEB_pythons\anaconda3\Library\bin\
qmake.exe   C:\DEB_pythons\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\bin\
sqlite3.exe C:\DEB_pythons\anaconda3\Library\bin\
sqlite3.exe C:\DEB_pythons\anaconda3\pkgs\sqlite-3.32.3-h2a8f88b_0\Library\bin\
libcrypto-1_1-x64.dll   C:\DEB_pythons\anaconda3\Library\bin\
libcrypto-1_1-x64.dll   C:\DEB_pythons\anaconda3\pkgs\openssl-1.1.1g-he774522_0\Library\bin\
llvmlite.dll    C:\DEB_pythons\anaconda3\Lib\site-packages\llvmlite\binding\
llvmlite.dll    C:\DEB_pythons\anaconda3\pkgs\llvmlite-0.33.0-py38ha925a31_0\Lib\site-packages\llvmlite\binding\
opengl32sw.dll  C:\DEB_pythons\anaconda3\Library\bin\
opengl32sw.dll  C:\DEB_pythons\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\bin\
Qt5Core.dll C:\DEB_pythons\anaconda3\Library\bin\
Qt5Core.dll C:\DEB_pythons\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\bin\
Qt5WebEngineCore.dll    C:\DEB_pythons\anaconda3\Library\bin\
Qt5WebEngineCore.dll    C:\DEB_pythons\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\bin\
xlwings.bas C:\DEB_pythons\anaconda3\Lib\site-packages\xlwings\
xlwings.bas C:\DEB_pythons\anaconda3\pkgs\xlwings-0.19.5-py38_0\Lib\site-packages\xlwings\
compiler.js C:\DEB_pythons\anaconda3\Lib\site-packages\bokeh\server\static\js\
compiler.js C:\DEB_pythons\anaconda3\pkgs\bokeh-2.1.1-py38_0\Lib\site-packages\bokeh\server\static\js\
yarn.js C:\DEB_pythons\anaconda3\Lib\site-packages\jupyterlab\staging\
yarn.js C:\DEB_pythons\anaconda3\Lib\site-packages\jupyterlab\staging\
yarn.js C:\DEB_pythons\anaconda3\pkgs\jupyterlab-2.1.5-py_0\site-packages\jupyterlab\staging\
yarn.js C:\DEB_pythons\anaconda3\pkgs\jupyterlab-2.1.5-py_0\site-packages\jupyterlab\staging\
menu-windows.json   C:\DEB_pythons\anaconda3\pkgs\notebook-6.0.3-py38_0\info\recipe\
menu-windows.json   C:\DEB_pythons\anaconda3\pkgs\spyder-4.1.4-py38_0\info\recipe\
notebook.json   C:\DEB_pythons\anaconda3\Menu\
notebook.json   C:\DEB_pythons\anaconda3\pkgs\notebook-6.0.3-py38_0\Menu\
spyder_shortcut.json    C:\DEB_pythons\anaconda3\Menu\
spyder_shortcut.json    C:\DEB_pythons\anaconda3\pkgs\spyder-4.1.4-py38_0\Menu\
Qt5Bootstrap.lib    C:\DEB_pythons\anaconda3\Library\lib\
Qt5Bootstrap.lib    C:\DEB_pythons\anaconda3\Library\lib\
Qt5Bootstrap.lib    C:\DEB_pythons\anaconda3\Library\lib\
Qt5Bootstrap.lib    C:\DEB_pythons\anaconda3\Library\lib\
Qt5Bootstrap.lib    C:\DEB_pythons\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\lib\
Qt5Bootstrap.lib    C:\DEB_pythons\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\lib\
Qt5Bootstrap.lib    C:\DEB_pythons\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\lib\
Qt5Bootstrap.lib    C:\DEB_pythons\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\lib\
__init__.py C:\DEB_pythons\anaconda3\Lib\site-packages\anaconda_navigator\utils\
__init__.py C:\DEB_pythons\anaconda3\Lib\site-packages\pathlib2\
__init__.py C:\DEB_pythons\anaconda3\Lib\site-packages\pathlib2\
__init__.py C:\DEB_pythons\anaconda3\pkgs\anaconda-navigator-1.9.12-py38_0\Lib\site-packages\anaconda_navigator\utils\
__init__.py C:\DEB_pythons\anaconda3\pkgs\pathlib2-2.3.5-py38_0\Lib\site-packages\pathlib2\
__init__.py C:\DEB_pythons\anaconda3\pkgs\pathlib2-2.3.5-py38_0\Lib\site-packages\pathlib2\
automation.py   C:\DEB_pythons\anaconda3\Lib\site-packages\pygments\lexers\
automation.py   C:\DEB_pythons\anaconda3\pkgs\pygments-2.6.1-py_0\site-packages\pygments\lexers\
base.py C:\DEB_pythons\anaconda3\Lib\site-packages\spyder\config\
base.py C:\DEB_pythons\anaconda3\Lib\site-packages\navigator_updater\config\
base.py C:\DEB_pythons\anaconda3\Lib\site-packages\anaconda_navigator\config\
base.py C:\DEB_pythons\anaconda3\pkgs\anaconda-navigator-1.9.12-py38_0\Lib\site-packages\anaconda_navigator\config\
base.py C:\DEB_pythons\anaconda3\pkgs\navigator-updater-0.2.1-py38_0\Lib\site-packages\navigator_updater\config\
base.py C:\DEB_pythons\anaconda3\pkgs\spyder-4.1.4-py38_0\Lib\site-packages\spyder\config\
environ.py  C:\DEB_pythons\anaconda3\Lib\site-packages\conda_build\
environ.py  C:\DEB_pythons\anaconda3\pkgs\conda-build-3.18.11-py38_1\Lib\site-packages\conda_build\
knownfolders.py C:\DEB_pythons\anaconda3\Lib\site-packages\anaconda_navigator\external\
knownfolders.py C:\DEB_pythons\anaconda3\Lib\site-packages\menuinst\
knownfolders.py C:\DEB_pythons\anaconda3\pkgs\anaconda-navigator-1.9.12-py38_0\Lib\site-packages\anaconda_navigator\external\
knownfolders.py C:\DEB_pythons\anaconda3\pkgs\menuinst-1.4.16-py38he774522_1\Lib\site-packages\menuinst\
layer1.py   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\
layer1.py   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\
ntpath.py   C:\DEB_pythons\anaconda3\Lib\
ntpath.py   C:\DEB_pythons\anaconda3\Lib\
ntpath.py   C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\
ntpath.py   C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\
pathlib.py  C:\DEB_pythons\anaconda3\Lib\
pathlib.py  C:\DEB_pythons\anaconda3\Lib\
pathlib.py  C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\
pathlib.py  C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\
paths.py    C:\DEB_pythons\anaconda3\Lib\site-packages\astropy\config\
paths.py    C:\DEB_pythons\anaconda3\Lib\site-packages\astropy\config\
paths.py    C:\DEB_pythons\anaconda3\pkgs\astropy-4.0.1.post1-py38he774522_1\Lib\site-packages\astropy\config\
paths.py    C:\DEB_pythons\anaconda3\pkgs\astropy-4.0.1.post1-py38he774522_1\Lib\site-packages\astropy\config\
platform_.py    C:\DEB_pythons\anaconda3\Lib\site-packages\keyring\util\
platform_.py    C:\DEB_pythons\anaconda3\pkgs\keyring-21.2.1-py38_0\Lib\site-packages\keyring\util\
pytester.py C:\DEB_pythons\anaconda3\Lib\site-packages\_pytest\
pytester.py C:\DEB_pythons\anaconda3\pkgs\pytest-5.4.3-py38_0\Lib\site-packages\_pytest\
test_config.py  C:\DEB_pythons\anaconda3\Lib\distutils\tests\
test_config.py  C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\distutils\tests\
test_dist.py    C:\DEB_pythons\anaconda3\Lib\distutils\tests\
test_dist.py    C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\distutils\tests\
test_path.py    C:\DEB_pythons\anaconda3\Lib\site-packages\IPython\utils\tests\
test_path.py    C:\DEB_pythons\anaconda3\Lib\site-packages\IPython\utils\tests\
test_path.py    C:\DEB_pythons\anaconda3\pkgs\ipython-7.16.1-py38h5ca1d4c_0\Lib\site-packages\IPython\utils\tests\
test_path.py    C:\DEB_pythons\anaconda3\pkgs\ipython-7.16.1-py38h5ca1d4c_0\Lib\site-packages\IPython\utils\tests\
win32.py    C:\DEB_pythons\anaconda3\Lib\site-packages\menuinst\
win32.py    C:\DEB_pythons\anaconda3\pkgs\menuinst-1.4.16-py38he774522_1\Lib\site-packages\menuinst\
win32cred_demo.py   C:\DEB_pythons\anaconda3\Lib\site-packages\win32\Demos\
win32cred_demo.py   C:\DEB_pythons\anaconda3\Lib\site-packages\win32\Demos\
win32cred_demo.py   C:\DEB_pythons\anaconda3\Lib\site-packages\win32\Demos\
win32cred_demo.py   C:\DEB_pythons\anaconda3\pkgs\pywin32-227-py38he774522_1\Lib\site-packages\win32\Demos\
win32cred_demo.py   C:\DEB_pythons\anaconda3\pkgs\pywin32-227-py38he774522_1\Lib\site-packages\win32\Demos\
win32cred_demo.py   C:\DEB_pythons\anaconda3\pkgs\pywin32-227-py38he774522_1\Lib\site-packages\win32\Demos\
__init__.cpython-38.pyc C:\DEB_pythons\anaconda3\Lib\site-packages\pathlib2\__pycache__\
__init__.cpython-38.pyc C:\DEB_pythons\anaconda3\Lib\site-packages\anaconda_navigator\utils\__pycache__\
__init__.cpython-38.pyc C:\DEB_pythons\anaconda3\pkgs\anaconda-navigator-1.9.12-py38_0\Lib\site-packages\anaconda_navigator\utils\__pycache__\
__init__.cpython-38.pyc C:\DEB_pythons\anaconda3\pkgs\pathlib2-2.3.5-py38_0\Lib\site-packages\pathlib2\__pycache__\
automation.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\site-packages\pygments\lexers\__pycache__\
base.cpython-38.pyc C:\DEB_pythons\anaconda3\Lib\site-packages\spyder\config\__pycache__\
base.cpython-38.pyc C:\DEB_pythons\anaconda3\Lib\site-packages\anaconda_navigator\config\__pycache__\
base.cpython-38.pyc C:\DEB_pythons\anaconda3\Lib\site-packages\navigator_updater\config\__pycache__\
base.cpython-38.pyc C:\DEB_pythons\anaconda3\pkgs\anaconda-navigator-1.9.12-py38_0\Lib\site-packages\anaconda_navigator\config\__pycache__\
base.cpython-38.pyc C:\DEB_pythons\anaconda3\pkgs\navigator-updater-0.2.1-py38_0\Lib\site-packages\navigator_updater\config\__pycache__\
base.cpython-38.pyc C:\DEB_pythons\anaconda3\pkgs\spyder-4.1.4-py38_0\Lib\site-packages\spyder\config\__pycache__\
environ.cpython-38.pyc  C:\DEB_pythons\anaconda3\Lib\site-packages\conda_build\__pycache__\
environ.cpython-38.pyc  C:\DEB_pythons\anaconda3\pkgs\conda-build-3.18.11-py38_1\Lib\site-packages\conda_build\__pycache__\
knownfolders.cpython-38.pyc C:\DEB_pythons\anaconda3\Lib\site-packages\menuinst\__pycache__\
knownfolders.cpython-38.pyc C:\DEB_pythons\anaconda3\Lib\site-packages\anaconda_navigator\external\__pycache__\
knownfolders.cpython-38.pyc C:\DEB_pythons\anaconda3\pkgs\anaconda-navigator-1.9.12-py38_0\Lib\site-packages\anaconda_navigator\external\__pycache__\
knownfolders.cpython-38.pyc C:\DEB_pythons\anaconda3\pkgs\menuinst-1.4.16-py38he774522_1\Lib\site-packages\menuinst\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\__pycache__\
layer1.cpython-38.pyc   C:\DEB_pythons\anaconda3\pkgs\boto-2.49.0-py38_0\Lib\site-packages\boto\opsworks\__pycache__\
ntpath.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\__pycache__\
ntpath.cpython-38.pyc   C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\__pycache__\
pathlib.cpython-38.pyc  C:\DEB_pythons\anaconda3\Lib\__pycache__\
pathlib.cpython-38.pyc  C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\__pycache__\
paths.cpython-38.pyc    C:\DEB_pythons\anaconda3\Lib\site-packages\astropy\config\__pycache__\
paths.cpython-38.pyc    C:\DEB_pythons\anaconda3\pkgs\astropy-4.0.1.post1-py38he774522_1\Lib\site-packages\astropy\config\__pycache__\
platform_.cpython-38.pyc    C:\DEB_pythons\anaconda3\Lib\site-packages\keyring\util\__pycache__\
platform_.cpython-38.pyc    C:\DEB_pythons\anaconda3\pkgs\keyring-21.2.1-py38_0\Lib\site-packages\keyring\util\__pycache__\
pytester.cpython-38.pyc C:\DEB_pythons\anaconda3\Lib\site-packages\_pytest\__pycache__\
pytester.cpython-38.pyc C:\DEB_pythons\anaconda3\pkgs\pytest-5.4.3-py38_0\Lib\site-packages\_pytest\__pycache__\
test_config.cpython-38.pyc  C:\DEB_pythons\anaconda3\Lib\distutils\tests\__pycache__\
test_config.cpython-38.pyc  C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\distutils\tests\__pycache__\
test_dist.cpython-38.pyc    C:\DEB_pythons\anaconda3\Lib\distutils\tests\__pycache__\
test_dist.cpython-38.pyc    C:\DEB_pythons\anaconda3\pkgs\python-3.8.3-he1778fa_2\Lib\distutils\tests\__pycache__\
test_path.cpython-38.pyc    C:\DEB_pythons\anaconda3\Lib\site-packages\IPython\utils\tests\__pycache__\
test_path.cpython-38.pyc    C:\DEB_pythons\anaconda3\Lib\site-packages\IPython\utils\tests\__pycache__\
test_path.cpython-38.pyc    C:\DEB_pythons\anaconda3\pkgs\ipython-7.16.1-py38h5ca1d4c_0\Lib\site-packages\IPython\utils\tests\__pycache__\
test_path.cpython-38.pyc    C:\DEB_pythons\anaconda3\pkgs\ipython-7.16.1-py38h5ca1d4c_0\Lib\site-packages\IPython\utils\tests\__pycache__\
win32.cpython-38.pyc    C:\DEB_pythons\anaconda3\Lib\site-packages\menuinst\__pycache__\
win32.cpython-38.pyc    C:\DEB_pythons\anaconda3\pkgs\menuinst-1.4.16-py38he774522_1\Lib\site-packages\menuinst\__pycache__\
win32cred_demo.cpython-38.pyc   C:\DEB_pythons\anaconda3\Lib\site-packages\win32\Demos\__pycache__\
win32cred_demo.cpython-38.pyc   C:\DEB_pythons\anaconda3\pkgs\pywin32-227-py38he774522_1\Lib\site-packages\win32\Demos\__pycache__\
_corecffi.cp38-win_amd64.pyd    C:\DEB_pythons\anaconda3\Lib\site-packages\gevent\libuv\
_corecffi.cp38-win_amd64.pyd    C:\DEB_pythons\anaconda3\pkgs\gevent-20.6.2-py38he774522_0\Lib\site-packages\gevent\libuv\
shell.pyd   C:\DEB_pythons\anaconda3\Lib\site-packages\win32comext\shell\
shell.pyd   C:\DEB_pythons\anaconda3\pkgs\pywin32-227-py38he774522_1\Lib\site-packages\win32comext\shell\
win32profile.pyd    C:\DEB_pythons\anaconda3\Lib\site-packages\win32\
win32profile.pyd    C:\DEB_pythons\anaconda3\pkgs\pywin32-227-py38he774522_1\Lib\site-packages\win32\

【讨论】:

  • 感谢@Debajyoti Dutta 所做的出色调查。截至 2020 年最新发行版,Anaconda3-2020.11-Windows-x86_64.exe 于 2021 年 4 月 25 日可用,%USERPROFILE% 恰好出现 3 次。但是 os.path.expanduser 恰好出现在 363 文件中,所以现在问题更深了。
  • 这真是令人沮丧。似乎每个软件包都在无休止地污染用户配置文件,使其膨胀并使所有内容都不可移植。 PLOTLY_DIR = os.environ.get("PLOTLY_DIR", os.path.join(os.path.expanduser("~"), ".plotly") 文件 = os.path.join(os.path.expanduser("~ "), ".netrc")
  • 这方面有什么进展吗? Anaconda 是 Windows 上任何类型的数据分析和数据科学工作的首选发行版。但是,如果没有便携式安装,Anaconda 就无法在不授予本地系统管理员权限的企业 IT 环境中工作。我今天面临这个问题,Anaconda Python 被 Azure Active Directory Security 重定向到“沙盒管理员帐户”中的 Windows 命令控制台。这周我浪费了几个小时寻找解决方法。 Python 程序不工作!! Anaconda 需要提供一个完全便携的安装程序。
  • 不幸的是,不仅没有解决方案,而且现在情况更糟。新的痛点是升级包和/或更新单个包/模块。
  • @RichLysakowskiPhD 不幸的是,不仅没有解决方案,而且现在情况更糟。新的痛苦领域是升级包和/或更新单个包/模块——特别是如果你已经完成了静默安装。它只是破坏了整个设置。代码停止工作。我不知道为什么 Anaconda 供应商对使其可移植不感兴趣。在企业 IT 环境方面,我和你有同样的情况,我个人总是更喜欢便携式设置。 WinPython 也没有做得更好。因此,我现在切换到了 nuget 方法。它的便携性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2015-06-12
  • 2016-09-28
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
相关资源
最近更新 更多