Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 激活虚拟环境不会';不能从npm命令工作_Python_Node.js_Shell_Npm_Pip - Fatal编程技术网

Python 激活虚拟环境不会';不能从npm命令工作

Python 激活虚拟环境不会';不能从npm命令工作,python,node.js,shell,npm,pip,Python,Node.js,Shell,Npm,Pip,在我的package.json中,我有一个脚本来激活我的python虚拟环境(我的项目同时使用python和Nodejs)。我基本上想从npm激活我的虚拟环境 "scripts": { "babel-node": "babel-node --stage 0 --ignore='foo|bar|baz'", "test": "export NODE_ENV='test'; ./node_modules/mocha/bin/mocha --compilers js:babel/reg

在我的
package.json
中,我有一个脚本来激活我的python虚拟环境(我的项目同时使用python和Nodejs)。我基本上想从npm激活我的虚拟环境

"scripts": {
    "babel-node": "babel-node --stage 0 --ignore='foo|bar|baz'",
    "test": "export NODE_ENV='test'; ./node_modules/mocha/bin/mocha --compilers js:babel/register server/test/index.js",
    "dev": "./node_modules/nodemon/bin/nodemon.js --exec npm run babel-node -- server/index.js",
    "activate": "source ./venv/bin/activate",

    "import": "python scraper -g -i -db caltrain_test && python ./scraper -g -i",
    "start": "node ./server",
    "docs": "cp README.md docs/index.md && ./node_modules/docco/bin/docco --layout=linear ./docs/index.md"
},
如果我直接从命令行激活虚拟环境,它可以工作:

jorgesilvajetter at Jorges-MacBook-Pro-2 in ~/Sites/2015/caltrain-api on master [!?$]
$ source venv/bin/activate
(venv) // This means that it worked!
但是,如果我从npm运行相同的命令,则该命令不起作用:

jorgesilvajetter at Jorges-MacBook-Pro-2 in ~/Sites/2015/caltrain-api on master [!?$]
$ npm run activate

> caltrain-api@0.0.3 activate /Users/jorgesilvajetter/Sites/2015/caltrain-api
> source ./venv/bin/activate
是否可以通过npm命令激活我的虚拟环境?似乎我对虚拟环境如何工作或npm如何执行脚本有些误解。也许,它正在另一个会话/选项卡中运行脚本?

来自“通过将该行作为脚本参数传递给sh来运行脚本”。因此,尽管您使用的是
源代码,但它位于新的子shell中


请注意:npm将
/node\u modules/.bin
添加到npm脚本的
路径
,因此在npm脚本中,您可以只编写
“nodemon”
而不是
”。node\u modules/nodemon/bin/nodemon.js“
“.node_modules/.bin/nodemon
。npm知道用正确的脚本填充
/node\u modules/.bin
,因为包作者在其
包.json

中指定了
“bin”
属性,这很有意义。是的,我知道第二部分。我想我只是喜欢这个符号,因为它清楚地表明,
nodemon
是项目的一个依赖项,不需要全局安装,但是如果你愿意,你可以不同意我的意见。你真的解决了这个问题吗?我遇到了同样的问题。我希望我能将npm用于所有看起来不可能的事情:(