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

相关推荐
HORSE RUNNING WILD2 分钟前
解决 PicGo 上传 GitHub图床及Marp中Github图片编译常见难题指南
css·python·github
夜晚中的人海12 分钟前
【C语言】初阶数据结构相关习题(二)
c语言·开发语言·数据结构
武昌库里写JAVA25 分钟前
MacOS Python3安装
java·开发语言·spring boot·学习·课程设计
ElenaYu26 分钟前
mac安装cast
python·macos·cast
Dxy123931021628 分钟前
python如何设置excel单元格边框样式
开发语言·python·excel
chaodaibing1 小时前
Python解析Excel入库如何做到行的拆分
开发语言·python·excel
dudly1 小时前
Python类的力量:第五篇:魔法方法与协议——让类拥有Python的“超能力”
开发语言·python
ghost1431 小时前
C#学习第22天:网络编程
开发语言·学习·c#
zhengddzz1 小时前
从卡顿到丝滑:JavaScript性能优化实战秘籍
开发语言·javascript·性能优化
范纹杉想快点毕业1 小时前
以项目的方式学QT开发(三)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
c语言·开发语言·c++·qt·mysql·算法·命令模式