为了账号安全,请及时绑定邮箱和手机立即绑定

Python 包管理器和 Node.js

Python 包管理器和 Node.js

繁花不似锦 2022-06-28 16:54:18
我正在尝试使用 Node.js 编译 python 脚本。python 脚本包括我安装的一些模块。我的 python 包管理器是 Anaconda,所以我尝试提供以下{"shell":"path to anaconda prompt"}选项:var exec = require('child_process').exec;exec('python hello.py',{"shell":"path to anaconda prompt"}, ..callback)但是,我收到一个错误:{ Error: spawn C:\Users\dream\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)\Anaconda Prompt (Anaconda3) ENOENT    at Process.ChildProcess._handle.onexit (internal/child_process.js:232:19)    at onErrorNT (internal/child_process.js:407:16)    at process._tickCallback (internal/process/next_tick.js:63:19)    at Function.Module.runMain (internal/modules/cjs/loader.js:744:11)    at startup (internal/bootstrap/node.js:285:19)    at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)  errno: 'ENOENT',  code: 'ENOENT',  syscall:   'spawn C:\\Users\\dream\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Anaconda3 (64-bit)\\Anaconda Prompt (Anaconda3)',  path:   'C:\\Users\\dream\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Anaconda3 (64-bit)\\Anaconda Prompt (Anaconda3)',  spawnargs: [ '/d', '/s', '/c', '"python hello.py"' ],  cmd: 'python hello.py' }stdout:stderr:我怀疑这是因为 Anaconda Prompt 只是一些奇怪的快捷方式,它为 cmd.exe 设置了一些变量(这是快捷方式指向的位置)。所以我的问题:我可以直接用 Node.js 调用 anaconda 提示符吗?pip 也有外壳吗?打包程序(pip、anaconda)如何使 python 可以访问模块?-> 这是通过一些环境变量吗?我可以像他们一样准备 cmd.exe 以使用 python 吗?
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

我认为您不想调用 Anaconda 提示符。

只需调用 python: python print('hello')

如果您调用: 命令行会发生什么Anaconda Prompt (Anaconda3) print('hello')

(这应该是评论,但我不能评论。)


查看完整回答
反对 回复 2022-06-28
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

我怀疑这是因为 Anaconda Prompt 只是一些奇怪的快捷方式,它为 cmd.exe 设置了一些变量

是的,差不多就是这样。所以,不,我不认为你可以按照建议来称呼它。可能有一种方法可以cmd.exe手动操作以使其像 Anaconda Prompt 会话一样运行,但我建议尝试...

康达运行

不确定这是否适用于 Windows,但可以用于conda run在 Conda 环境中执行。这是在 Conda v4.6 中作为实验性功能引入(并且仍然保留)的,其明确目的是使人们能够在 Conda 环境中运行某些东西而无需交互地激活它。

先决条件

首先,您可能应该测试它conda run在 Windows 上的工作原理。假设您conda.exe位于

C:\Users\dream\Anaconda3\Scripts\conda.exe

启动一个干净的cmd.exe会话,其中conda未定义(即不是 Anaconda 提示)。然后尝试像

C:\Users\dream\Anaconda3\Scripts\conda.exe run where python

或者,如果你有另一个环境,说my_env你也可以

C:\Users\dream\Anaconda3\Scripts\conda.exe run -n my_env where python

验证运行的 Python 解释器是指定的解释器。

(可能的)解决方案

如果上述方法有效,那么您应该可以执行类似的操作

var exec = require('child_process').exec;
exec('C:\Users\dream\Anaconda3\Scripts\conda.exe run python hello.py', ..callback)

不确定您是否需要在这种情况下指定的外壳。


查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信