为什么npm在我的主目录中安装本地包?

时间:2018-06-17 07:58:45

标签: node.js npm

Node.js newbie here,Windows 10.I from sklearn.grid_search import GridSearchCV from sklearn.ensemble import RandomForestClassifier n_trees = list(range(10,110,10)) print(n_trees) [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] param_grid = dict(n_estimators=n_trees) print(param_grid) {'n_estimators': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]} grid = GridSearchCV(RandomForestClassifier, param_grid, cv=5, scoring='roc_auc') grid.fit(X,y) <--- Getting error at this cell - 在没有npm install的目录中编辑了一些软件包(没有-g)。 npm将包放在package.json

现在我看到了一些奇怪的行为:

  • 当我在项目目录中时(C:\Users\{MyName}\node_modules\但尚未package.json),node_modules/npm list都显示空列表
  • 当我在非项目目录中时(没有npm list -g)...
    • package.json仍显示空列表
    • 但是,npm list -g会在npm list
    • 中显示所有内容

问题1.这里发生了什么?显然,npm's default global path should be C:\Users\{MyName}\AppData\Roaming\npm\。如果是这样,为什么使用C:\Users\{MyName}\node_modules\

问题2.如何摆脱这种混乱局面? Node.js从C:\Users\{MyName}\node_modules\导入包没有问题,但我想让npm正确列出它们。如何删除半全局包,正确地重新安装它们,并确保不再发生这种情况?

3 个答案:

答案 0 :(得分:4)

Welp,结果我错误地npm install - 没有 package.json的包。我第一次这样做,我在我的主目录(C:\Users\{MyName}\)。这导致npm在主目录中创建node_modules/package-lock.json。进一步(错误的)尝试在我的项目中安装软件包 - 仍然缺少package.json - 导致npm向上遍历,直到找到最初的node_modules/目录,并在那里安装所有内容。 Because my home directory is among the places Node.js looks for modules,直到现在我才注意到我的错误。 :P

答案 1 :(得分:2)

不确定为什么会这样做,但避免它的方法是使用以下方法初始化项目目录:

npm init

或者如果您不想回答这些问题:

npm init -y

这将设置包含package.jsonnode_modules的目录。

答案 2 :(得分:0)

好的,然后有几个提示......

当您安装要在生产中使用的包时,请添加--save,例如

npm install --save some-package

这将自动将依赖项添加到package.json。如果您要安装纯粹用于开发的软件包,例如chai,然后使用

--save-dev

,它会将它添加到开发依赖项中。

另外,git是你的朋友,即使你只是搞乱了:)

快乐的noding:)