npm 和 pip 安装中常见问题总结

安装路径的疑惑:NPM 和 PIP 的安装机制

NPM 安装路径规则:
  • 依赖安装在项目目录下: 当你运行 npm install --save-dev jest,它会在当前目录(例如 F:\)下创建一个 node_modules 文件夹,把 jest 安装在这个文件夹里。同时,它会创建或更新 package.json 文件来记录安装的依赖。

    例子:

    • F:\my_project 运行 npm install jest,Jest 会安装到 F:\my_project\node_modules 里。
    • 如果你换到 C:\another_project 目录,之前在 F:\ 安装的 Jest 是无法直接使用的,需要在 C:\another_project 重新安装。
  • 全局安装: 如果你希望在所有目录都能使用 jest,可以使用全局安装:

    npm install -g jest
    

    这样 jest 会安装到全局环境,之后在任意目录下都能运行 jest 命令。


PIP 安装路径规则(Python 包管理器):
  • 默认安装到系统或虚拟环境的 site-packages: 当你运行 pip install package_name,包会安装到 Python 的 site-packages 目录,而不是你当前所在的磁盘目录。安装路径与运行命令的磁盘无关。

    例子:

    • C:\ 运行 pip install requests 和在 F:\ 运行,效果是一样的,都会安装到 Python 默认的 site-packages 目录。
  • 虚拟环境中的安装: 如果你创建了一个 虚拟环境,例如在 F:\env,激活这个环境后运行 pip install,包会被安装到这个虚拟环境内。只有在激活这个环境时,才能使用这些包。

    全局与虚拟环境的区别

    • 全局安装:任何地方都能用。
    • 虚拟环境安装:只有在特定环境中能用,便于项目隔离。

3. 总结:NPM vs PIP 安装行为

特点NPM (Node.js)PIP (Python)
默认安装位置当前项目目录的 node_modules 文件夹Python 的 site-packages 目录(与磁盘无关)
全局安装需加 -g 参数 (npm install -g package)需加 --user 参数 (pip install --user package)
跨项目使用全局安装可跨项目使用,局部安装仅限当前目录全局安装默认可用,虚拟环境安装仅限当前环境
虚拟环境默认每个项目独立依赖,类似虚拟环境需要手动创建虚拟环境 (python -m venv env)

你可以通过以下几种方法查看 Python 的 site-packages 目录位置:

1. 使用 site 模块

在终端(命令行)中输入以下命令:

python -m site

输出结果会显示类似以下内容:

sys.path = ['...','/usr/local/lib/python3.10/site-packages','...',
]
USER_BASE: '/home/username/.local' 
USER_SITE: '/home/username/.local/lib/python3.10/site-packages' 
ENABLE_USER_SITE: True
  • site-packages 目录就是 /usr/local/lib/python3.10/site-packagesUSER_SITE 显示的路径。

2. 使用 sysconfig 模块

在终端中输入:

python -m sysconfig

输出中找到 site-packages 相关路径,例如:

'purelib': '/usr/local/lib/python3.10/site-packages',
'platlib': '/usr/local/lib/python3.10/site-packages',

3. 使用 Python 代码获取路径

如果你在 Python 解释器中运行,可以用以下代码:

import site
print(site.getsitepackages())  # 查看全局 site-packages 目录print(site.getusersitepackages())  # 查看当前用户的 site-packages 目录

输出类似:

['C:\\Python310\\Lib\\site-packages']
C:\Users\YourUsername\AppData\Roaming\Python\Python310\site-packages

4. 在虚拟环境中查看 site-packages

如果你在虚拟环境(venv)中,可以用以下命令查看:

python -c "import sys; print([p for p in sys.path if 'site-packages' in p])"

输出会类似:

['F:\\my_virtual_env\\Lib\\site-packages']

这表示在 F:\my_virtual_env\Lib\site-packages 目录下安装了 Python 包。


5. PIP 查看安装路径

你还可以用 pip 查看包的安装路径,运行:

pip show 包名

例如,查看 requests 包的安装路径:

pip show requests

输出:

Location: C:\Python310\Lib\site-packages

总结

  • 全局安装路径:使用 python -m siteimport site 查看。
  • 用户安装路径:使用 site.getusersitepackages() 查看。
  • 虚拟环境路径:激活虚拟环境后使用 sys.pathpip show 查看。

Node.js 和 npm 安装中常见问题总结

1. 安装路径选择

问题
安装 Node.js 时,选择将其安装到 D:\Programming\Node.json,但 npm 的全局包却默认安装到了 C:\Users\Acer\AppData\Roaming\npm\node_modules

原因

  • Node.js 的安装路径和 npm 全局包的存储路径是独立的。
  • npm 默认将全局包安装在用户目录 (AppData) 中,以便多项目共享,并避免系统权限问题。

解决方案

  • 如果希望将全局包安装到 Node.js 的安装目录,可以修改 npm config
    npm config set prefix "D:\Programming\Node.json\node_modules"
    
  • 检查和确认全局路径是否设置正确:
    npm root -g
    

2 删除错误的 prefix 配置:
npm config delete prefix
  1. 如果命令无法删除,手动编辑 .npmrc 文件:

    • 查找配置文件路径:
      npm config get userconfig
      
    • 打开该文件,删除或修改 prefix 设置:
  2. 重新设置正确路径:

    npm config set prefix "D:\Programming\Node.json\node_modules\npm\lib"
    

3 环境变量未更新

问题
修改 prefix 路径后,全局安装的命令行工具(如 nodemon, eslint)无法使用。

原因

  • 修改全局路径后,没有将新的 bin 目录添加到系统环境变量,导致命令行找不到工具。

解决方案

  1. Path 中添加:

    D:\Programming\Node.json\node_modules\npm\lib\bin
    
  2. 重启命令行窗口,确保环境变量生效。

总结


正确配置项目使用的测试框架

  • 安装 Node.js 时:可以安装到任意盘符,但全局包路径和环境变量需要根据实际需求调整。
  • 修改 npm 配置:使用 npm config set prefix 修改全局路径,或手动编辑 .npmrc 文件。
  • 环境变量配置:确保将新的 bin 路径添加到系统环境变量中,避免全局工具无法使用的问题。

  • 关键点:

  • 全局配置 (D:\Programming\Node.json\node_modules\npm) 只影响 Node.js 的全局行为,不会影响你具体项目的测试运行
  • 我们需要修改的是你项目目录下的 package.json 文件,即:
    F:\course\engineering\2025-group-24\package.json
  • 找到你的项目 package.json 文件,修改项目的 package.json  打开该文件,找到 scripts 部分,修改为:

  • "scripts": {"test": "jest"
    }
    
  • 运行测试:在终端中,确保你位于项目目录:

    cd F:\course\engineering\2025-group-24
    npm test
    
  • 不要修改全局 npmpackage.json,它只影响全局行为,和项目测试无关。修改项目目录下的 package.json,这样 Jest 才能在项目中运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/67818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能:农业领域的变革力量

在当今科技飞速发展的时代,人工智能正以前所未有的态势渗透进各个领域,农业也不例外。想象一下,未来的农田里,农民不再是弯腰劳作的形象,而是坐在高科技的“智能农场”里,悠闲地喝着咖啡,指挥着…

LLM的Deep Research功能:重构人类认知与创新的新范式

在人工智能迅速发展的今天,大语言模型(LLM)的deep research功能正在成为重构人类认知方式的关键力量。 这一突破性的技术进展不仅带来了工具层面的革新,更深刻地触及了人类认知能力的本质。 本文将从认知科学的视角出发&#xf…

【Cadence仿真技巧学习笔记】求解65nm库晶体管参数un, e0, Cox

在设计放大器的第一步就是确定好晶体管参数和直流工作点的选取。通过阅读文献,我了解到L波段低噪声放大器的mos器件最优宽度计算公式为 W o p t . p 3 2 1 ω L C o x R s Q s p W_{opt.p}\frac{3}{2}\frac{1}{\omega LC_{ox}R_{s}Q_{sp}} Wopt.p​23​ωLCox​Rs…

前端力扣刷题 | 6:hot100之 矩阵

73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 法一: var setZeroes function(matrix) {let setX new Set(); // 用于存储需要置零的行索引let setY new Set(); //…

集合通讯概览

(1)通信的算法 是根据通讯的链路组成的 (2)因为通信链路 跟硬件强相关,所以每个CCL的库都不一样 芯片与芯片、不同U之间是怎么通信的!!!!!! 很重要…

java异常处理——try catch finally

单个异常处理 1.当try里的代码发生了catch里指定类型的异常之后,才会执行catch里的代码,程序正常执行到结尾 2.如果try里的代码发生了非catch指定类型的异常,则会强制停止程序,报错 3.finally修饰的代码一定会执行,除…

C++进阶: 红黑树及map与set封装

红黑树总结整理 红黑色概述: 红黑树整理与AVL树类似,但在对树的平衡做控制时,AVL树会比红黑树更严格。 AVL树是通过引入平衡因子的概念进行对树高度控制。 红黑树则是对每个节点标记颜色,对颜色进行控制。 红黑树控制规则&…

列表标签(无序列表、有序列表)

无序列表 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><…

Kanass基础教程-创建项目

Kanass是一款国产开源免费的项目管理工具&#xff0c;工具简洁易用&#xff0c;开源免费&#xff0c;之前介绍过kanass的一些产品简介及安装配置方法&#xff0c;本文就从如何创建第一个项目来开始kanass上手之旅吧。 1. 创建项目 点击项目->项目添加 按钮进入项目添加页面…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.10 ndarray内存模型:从指针到缓存优化

2.10 ndarray内存模型&#xff1a;从指针到缓存优化 目录 #mermaid-svg-p0zxLYqAnn59O2Xe {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-p0zxLYqAnn59O2Xe .error-icon{fill:#552222;}#mermaid-svg-p0zxLYqAnn59O…

80-《红球姜》

红球姜 红球姜&#xff08;学名&#xff1a;Zingiber zerumbet (L.) Smith&#xff09;是姜科姜属多年生草本植物&#xff0c;根茎块状&#xff0c;株高可达2米。叶片披针形至长圆状披针形&#xff0c;无柄或短柄&#xff1b;总花梗长可达30厘米&#xff0c;花序球果状&#xf…

UE 5.3 C++ 对垃圾回收的初步认识

一.UObject的创建 UObject 不支持构造参数。 所有的C UObject都会在引擎启动的时候初始化&#xff0c;然后引擎会调用其默认构造器。如果没有默认的构造器&#xff0c;那么 UObject 将不会编译。 有修改父类参数的需求&#xff0c;就使用指定带参构造 // Sets default value…

点击WPS 任务栏上的图标,不是马上进入工作页面,而是呈现多个文档页面选择时的处理方法

问题&#xff1a; 点击WPS以后不是直接进入 解决&#xff1a; 首页-配置和修复工具-高级-兼容设置-改为与microsoft office 2010兼容(D)

【自然语言处理(NLP)】基于Transformer架构的预训练语言模型:BERT 训练之数据集处理、训练代码实现

文章目录 介绍BERT 训练之数据集处理BERT 原理及模型代码实现数据集处理导包加载数据生成下一句预测任务的数据从段落中获取nsp数据生成遮蔽语言模型任务的数据从token中获取mlm数据将文本转换为预训练数据集创建Dataset加载WikiText-2数据集 BERT 训练代码实现导包加载数据构建…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.5 高级索引应用:图像处理中的区域提取

2.5 高级索引应用&#xff1a;图像处理中的区域提取 目录/提纲 #mermaid-svg-BI09xc20YqcpUam7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-BI09xc20YqcpUam7 .error-icon{fill:#552222;}#mermaid-svg-BI09xc20…

通过Redisson构建延时队列并实现注解式消费

目录 一、序言二、延迟队列实现1、Redisson延时消息监听注解和消息体2、Redisson延时消息发布器3、Redisson延时消息监听处理器 三、测试用例四、结语 一、序言 两个月前接了一个4万的私活&#xff0c;做一个线上商城小程序&#xff0c;在交易过程中不可避免的一个问题就是用户…

Baklib构建高效协同的基于云的内容中台解决方案

内容概要 随着云计算技术的飞速发展&#xff0c;内容管理的方式也在不断演变。企业面临着如何在数字化转型过程中高效管理和协同处理内容的新挑战。为应对这些挑战&#xff0c;引入基于云的内容中台解决方案显得尤为重要。 Baklib作为创新型解决方案提供商&#xff0c;致力于…

deepseek+vscode自动化测试脚本生成

近几日Deepseek大火,我这里也尝试了一下,确实很强。而目前vscode的AI toolkit插件也已经集成了deepseek R1,这里就介绍下在vscode中利用deepseek帮助我们完成自动化测试脚本的实践分享 安装AI ToolKit并启用Deepseek 微软官方提供了一个针对AI辅助的插件,也就是 AI Toolk…

电介质超表面中指定涡旋的非线性生成

涡旋光束在众多领域具有重要应用&#xff0c;但传统光学器件产生涡旋光束的方式限制了其在集成系统中的应用。超表面的出现为涡旋光束的产生带来了新的可能性&#xff0c;尤其是在非线性领域&#xff0c;尽管近些年来已经有一些研究&#xff0c;但仍存在诸多问题&#xff0c;如…

基于Springboot+mybatis+mysql+html图书管理系统2

基于Springbootmybatismysqlhtml图书管理系统2 一、系统介绍二、功能展示1.用户登陆2.用户主页3.图书查询4.还书5.个人信息修改6.图书管理&#xff08;管理员&#xff09;7.学生管理&#xff08;管理员&#xff09;8.废除记录&#xff08;管理员&#xff09; 三、数据库四、其它…