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 才能在项目中运行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小红的合数寻找

A-小红的合数寻找_牛客周赛 Round 79 题目描述 小红拿到了一个正整数 x,她希望你在 [x,2x] 区间内找到一个合数,你能帮帮她吗? 一个数为合数,当且仅当这个数是大于1的整数,并且不是质数。 输入描述 在一行上输入一…

Linux环境下的Java项目部署技巧:安装 Mysql

查看 myslq 是否安装: rpm -qa|grep mysql 如果已经安装,可执行命令来删除软件包: rpm -e --nodeps 包名 下载 repo 源: http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm 执行命令安装 rpm 源(根据下载的…

基于springboot+vue的哈利波特书影音互动科普网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

在React中使用redux

一、首先安装两个插件 1.Redux Toolkit 2.react-redux 第一步:创建模块counterStore 第二步:在store的入口文件进行子模块的导入组合 第三步:在index.js中进行store的全局注入 第四步:在组件中进行使用 第五步:在组件中…

记录 | 基于MaxKB的文字生成视频

目录 前言一、安装SDK二、创建视频函数库三、调试更新时间 前言 参考文章:如何利用智谱全模态免费模型,生成大家都喜欢的图、文、视并茂的文章! 自己的感想 本文记录了创建文字生成视频的函数库的过程。如果想复现本文,需要你逐一…

Redis|前言

文章目录 什么是 Redis?Redis 主流功能与应用 什么是 Redis? Redis,Remote Dictionary Server(远程字典服务器)。Redis 是完全开源的,使用 ANSIC 语言编写,遵守 BSD 协议,是一个高性…

安全防护前置

就业概述 网络安全工程师/安全运维工程师/安全工程师 安全架构师/安全专员/研究院(数学要好) 厂商工程师(售前/售后) 系统集成工程师(所有计算机知识都要会一点) 学习目标 前言 网络安全事件 蠕虫病毒--&…

开源2 + 1链动模式AI智能名片S2B2C商城小程序视角下从产品经营到会员经营的转型探究

摘要:本文聚焦于开源2 1链动模式AI智能名片S2B2C商城小程序,深入探讨在其应用场景下,企业从产品经营向会员经营转型的必要性与策略。通过分析如何借助该平台优化会员权益与价值,解决付费办卡的接受度问题,揭示其在提升…

让banner.txt可以自动读取项目版本

文章目录 1.sunrays-dependencies1.配置插件2.pluginManagement统一指定版本 2.common-log4j2-starter1.banner.txt使用$ 符号取出2.查看效果 1.sunrays-dependencies 1.配置插件 <!-- 为了让banner.txt自动获取版本号 --><plugin><groupId>org.apache.mave…

音视频多媒体编解码器基础-codec

如果要从事编解码多媒体的工作&#xff0c;需要准备哪些更为基础的内容&#xff0c;这里帮你总结完。 因为数据类型不同所以编解码算法不同&#xff0c;分为图像、视频和音频三大类&#xff1b;因为流程不同&#xff0c;可以分为编码和解码两部分&#xff1b;因为编码器实现不…

openmv运行时突然中断并且没断联只是跟复位了一样

就是 # 内存不足时硬件复位 except MemoryError as me: print("Memory Error:", me) pyb.hard_reset() # 内存不足时硬件复位 很有可能是你的代码加了内存溢出的复位&#xff0c;没加的话他会报错的

Redis集群理解以及Tendis的优化

主从模式 主从同步 同步过程&#xff1a; 全量同步&#xff08;第一次连接&#xff09;&#xff1a;RDB文件加缓冲区&#xff0c;主节点fork子进程&#xff0c;保存RDB&#xff0c;发送RDB到从节点磁盘&#xff0c;从节点清空数据&#xff0c;从节点加载RDB到内存增量同步&am…

77-《欧耧斗菜》

欧耧斗菜 欧耧斗菜&#xff08;学名&#xff1a;Aquilegia vulgaris L. &#xff09;是毛茛科耧斗菜属植物&#xff0c;株高30-60厘米。基生叶有长柄&#xff0c;基生叶及茎下部叶为二回三出复叶&#xff0c;小叶2-3裂&#xff0c;裂片边缘具圆齿。最上部茎生叶近无柄。聚伞花序…

为AI聊天工具添加一个知识系统 之83 详细设计之24 度量空间之1 因果关系和过程:认知金字塔

本文要点 度量空间 在本项目&#xff08;为AI聊天工具添加一个知识系统 &#xff09;中 是出于对“用”的考量 来考虑的。这包括&#xff1a; 相对-位置 力用&#xff08;“相”&#xff09;。正如 法力&#xff0c;相关-速度 体用 &#xff08;“体”&#xff09;。例如 重…

Unity 2D实战小游戏开发跳跳鸟 - 跳跳鸟碰撞障碍物逻辑

在有了之前创建的可移动障碍物之后,就可以开始进行跳跳鸟碰撞到障碍物后死亡的逻辑,死亡后会产生一个对应的效果。 跳跳鸟碰撞逻辑 创建Obstacle Tag 首先跳跳鸟在碰撞到障碍物时,我们需要判定碰撞到的是障碍物,可以给障碍物的Prefab预制体添加一个Tag为Obstacle,添加步…

记录 | Docker的windows版安装

目录 前言一、1.1 打开“启用或关闭Windows功能”1.2 安装“WSL”方式1&#xff1a;命令行下载方式2&#xff1a;离线包下载 二、Docker Desktop更新时间 前言 参考文章&#xff1a;Windows Subsystem for Linux——解决WSL更新速度慢的方案 参考视频&#xff1a;一个视频解决D…

[SAP ABAP] 在ABAP Debugger调试器中设置断点

在命令框输入/H&#xff0c;点击回车以后&#xff0c;调试被激活&#xff0c;点击触发任意事件进入ABAP Debugger调试器界面 点击按钮&#xff0c;可以在Debugger调试器中新增临时断点 我们可以从ABAP命令、方法、功能、表单、异常、消息、源代码等多个维度在Debugger调试器中设…

深度学习之“线性代数”

线性代数在深度学习中是解决多维数学对象计算问题的核心工具。这些数学对象包括标量、向量、矩阵和张量&#xff0c;借助它们可以高效地对数据进行操作和建模。以下将详细介绍这些数学对象及其在深度学习中的典型用途。 数学对象概述 标量 标量是最简单的数学对象&#xff0…

【面经】字节南京一面部分题目记录

南京字节一面题&#xff0c;可能因为项目不太匹配&#xff0c;全程八股比较多&#xff0c;也有两道手撕代码题&#xff0c;强度还是有的。为了方便大家学习&#xff0c;大部分答案由GPT整理&#xff0c;有些题给出了我认为回答比较好的博客链接。 文章目录 一、python2 和 pyth…

17.3.4 颜色矩阵

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 17.3.4.1 矩阵基本概念 矩阵&#xff08;Matrix&#xff09;是一个按照长方阵列排列的复数或实数集合&#xff0c;类似于数组。 由…