我创建了3个文件,snek.py
、requirements.txt
和runsnek.py
。runsnek.py
用pip在requirements.txt
中安装所有必需的模块,并运行snek.py
。在Windows 10上一切正常,但是当试图在Ubuntu (WSL2)上运行时,会引发一个错误:
❯ 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
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
# pip reqs
pathlib
snek.py
from pathlib import Path
cwd = Path('.')
# [...]
发布于 2022-08-30 12:19:39
在您的python2实例中似乎使用了WSL2。
在行os.system('python snek.py')
中,它应该运行python2而不是python3。
要纠正这个问题,您可以通过os.system('python3 snek.py')
更改这一行代码。
发布于 2022-08-30 20:30:56
您的run
文件可以简化:
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安装,这解决了您原来的问题。
https://stackoverflow.com/questions/73542262
复制相似问题