首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“没有名为x的模块”,即使它只是安装了pip

“没有名为x的模块”,即使它只是安装了pip
EN

Stack Overflow用户
提问于 2022-08-30 12:11:48
回答 2查看 26关注 0票数 0

我创建了3个文件,snek.pyrequirements.txtrunsnek.pyrunsnek.py用pip在requirements.txt中安装所有必需的模块,并运行snek.py。在Windows 10上一切正常,但是当试图在Ubuntu (WSL2)上运行时,会引发一个错误:

代码语言:javascript
运行
复制
❯ python runsnek.py
Requirement already up-to-date: pathlib in /home/rootuser/.local/lib/python3.8/site-packages (from -r requirements.txt (line 2)) (1.0.1)
Traceback (most recent call last):
  File "snek.py", line 1, in <module>
    from pathlib import Path
ImportError: No module named pathlib

我不知道是什么导致了Linux上的问题。它可能是某种未定义的pip模块路径。printenv没有显示任何包含python这个词的内容。

文件

以下是所有提到的文件。

runsnek.py

代码语言:javascript
运行
复制
import os, platform

os.system('pip install --upgrade -r requirements.txt')
if platform.system() == 'Windows':
  os.system('py snek.py')
elif '':
  raise Warning('snek could not be ran, try running snek.py instead')
else:
  os.system('python snek.py')

requirements.txt

代码语言:javascript
运行
复制
# pip reqs
pathlib

snek.py

代码语言:javascript
运行
复制
from pathlib import Path
cwd = Path('.')
# [...]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-30 12:19:39

在您的python2实例中似乎使用了WSL2。

在行os.system('python snek.py')中,它应该运行python2而不是python3。

要纠正这个问题,您可以通过os.system('python3 snek.py')更改这一行代码。

票数 2
EN

Stack Overflow用户

发布于 2022-08-30 20:30:56

您的run文件可以简化:

代码语言:javascript
运行
复制
import sys, os
print('Running with ' + sys.executable)
os.system(sys.executable + ' -m pip install --upgrade -r requirements.txt')
os.system(sys.executable +' snek.py')

sys.executable总是包含运行当前脚本的python解释器的路径。使用python -m pip install还可以确保相同的python解释器用于pip安装,这解决了您原来的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73542262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档