当前位置: 首页 > 面试题库 >

Python软件包管理器和Node.js

南宫才英
2023-03-14
问题内容

我正在尝试使用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一起使用的方法吗?


问题答案:

我怀疑这是因为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 Prompt)。然后尝试类似

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)

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



 类似资料:
  • 安装 要在集群主机上安装 Ceph 软件包,在管理主机上打开命令行并执行下列命令: ceph-deploy install {hostname [hostname] ...} 没提供额外选项的话 ceph-deploy 默认会把最新稳定版安装到集群主机,要指定某个软件包可以用下列参数: --release <code-name> --testing --dev <branch-or-tag> 例如

  • apt-get Ubuntu 系统软件包管理器 apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具。所有基于 Debian 的发行都使用这个包管理系统。 apt-get install xxx #安装软件 apt-get remove xxx ##删除软件 apt-get purge xxx #删除软件并删除配置文件 apt-get autoremove x

  • 问题内容: 一个最近的问题在这里SO让我思考。 在我尝试过的大多数Linux发行版中,某些Perl模块可以通过软件包管理器获得。其他人当然不会。在相当长的一段时间里,每当我需要安装一些CPAN模块来查找某个软件包是否可用并在安装该软件包时都将使用我的软件包管理器。 明显的好处是,只要有新版本的软件包可用,您就可以更新模块。 但是,当模块无法以预打包的形式提供并且该模块存在依赖项时,您会遇到麻烦。每

  • 本文向大家介绍Linux yum软件包管理方法,包括了Linux yum软件包管理方法的使用技巧和注意事项,需要的朋友参考一下 简介 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须

  • Chapter 3. 软件包管理工具 Table of Contents 3.1. apt-get 3.2. apt-cache 3.3. apt-file 3.4. apt-key 3.5. 建立一个混合系统 3.6. 升级指定版本的软件包 3.7. 保持指定软件包的版本 软件包管理是区分不同发行版的一大特征,如RedHat使用RPM软件包来管理软件,Debian使用Deb软件包来管理软件。ap

  • 高级包管理工具 aptitude 是目前首选的字符界面的 APT 前端程序。 它会记住哪些包是你安装的,哪些是为了满足依赖关系而安装的;在不被已安装包需要的情况下aptitude 会自动卸载后者。它内建一套高级的包过滤器,但是比较难上手。 synaptic 是目前首选的基于 GTK 的图形化 APT 前端程序。它的包过滤器比 aptitude 的好用多了。它包含了对 Debian Package