ModuleNotFoundError when 运行 script with conda from console (but not in jupyter) on remote machine

ModuleNotFoundError when running script with conda from console (but not in jupyter) on remote machine

我在访问受限的远程桌面上工作,这意味着我无法安装任何东西,也无法使用 pipconda install 安装任何软件包(被防火墙阻止)。我确实有一个便携式 Python 版本和 Miniconda“安装”。

所以我在本地机器上创建了一个 conda environment 并将其复制到远程桌面。今天我需要在远程机器上安装 new_package,所以我将它安装在本地机器上并复制了包文件夹(/new_package//new_package-0.0.1.dist-info/

来自我的本地 Python_installation/Lib/site-packages

我在远程机器上的 conda 环境 anaconda3/envs/my_env/lib/site-packages/

当我 运行 conda list 我现在可以在远程机器上找到复制的包。

问题: 但是,当我尝试 运行 一个带有 conda run python myscript.py 的 python 脚本时,它有一个到 new_package 的导入语句,它失败了 ModuleNotFoundError:

ERROR conda.cli.main_run:execute(32): Subprocess for 'conda run ['python', '.\myscript.py']' command failed.  (See above for error)
Traceback (most recent call last):
  File "X:\mycsript.py", line 2, in <module>
    from new_package import something
ModuleNotFoundError: No module named 'new_package'

但是,当我用一行 jupyter notebook 启动

from myscript.py import * 

它导入所有内容并且执行完美。所以问题不在于包不起作用 - conda 用 conda list 识别包,我可以在 jupyter notebook 中导入它,但当我 运行 来自控制台的脚本时不行。

我需要做什么才能从控制台执行脚本?

一段时间后,我重新审视了这个问题并找到了解决方案 - 不激活环境,而是将环境作为参数传递给 conda run,如下所示。出于某种原因,这会正确导入模块。

不工作并且导入失败:

conda activate my_environment
conda run python my_file.py

工作解决方案:

conda run -n my_environment python my_file.py