【发布时间】:2021-06-04 02:04:37
【问题描述】:
我有一个 py 文件,它使用传递给它的系统参数执行 google 搜索,并将搜索的前五个结果作为单独的浏览器选项卡打开(这是 Automate the Boring Stuff 书中的一个练习)。
我想通过 Windows 运行命令执行此脚本,因此创建了一个 BAT 文件。
目前,当我执行BAT文件时,返回“找不到模块”错误。
我怀疑这个问题与py文件所需的模块仅安装在我的特定python项目的虚拟环境中有关(我有一个专门用于本书练习的项目)。因此,我将必要的模块直接安装到了我的主要 Python 安装环境中。不幸的是,这没有效果。
然后我通过在执行我的 py 文件的行之前添加一行来激活我的虚拟环境来修改我的 BAT 文件。这似乎阻止了我的 py 文件被 BAT 文件执行。
我对 Python 有点熟悉,但对 BAT 文件和一般命令行比较陌生。我已经阅读了一个基本的命令行教程,但找不到任何有用的东西。
我不确定如何解决这个问题,如果可能的话,我希望避免使用大量模块污染我的主要 python 环境。这可能吗?如果可以,我错过了什么?
.bat 文件
@py.exe C:\Users\Betty\PycharmProjects\Automate_the_Boring_Stuff\12\searchpypi.py %*
@pause
.py 文件
#! python3
# searchpypi.py - Opens several search results.
import sys
import webbrowser
import requests
import bs4
print('Searching...') # display text while downloading the search result page
res = requests.get('https://google.com/search?q=' 'https://pypi.org/search/?q='
+ ' '.join(sys.argv[1:]))
res.raise_for_status()
# Retrieve top search result links.
soup = bs4.BeautifulSoup(res.text, 'html.parser')
# Open a browser tab for each result.
linkElems = soup.select('.package-snippet')
numOpen = min(5, len(linkElems))
# Open a browser tab for each result.
for i in range(numOpen):
urlToOpen = 'https://pypi.org' + linkElems[i].get('href')
print('Opening', urlToOpen)
webbrowser.open(urlToOpen)
编辑(UTC 时间 2021 年 3 月 5 日星期五 16:41:27):
错误信息(从命令行复制):
Traceback (most recent call last):
File "C:\Users\Betty\PycharmProjects\Automate_the_Boring_Stuff\12\searchpypi.py", line 8, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
Press any key to continue . . .
编辑(2021 年 3 月 6 日星期六 07:39:43 UTC):
点子详情:
C:\Users\Betty>pip -V
pip 21.0.1 from c:\python38\lib\site-packages\pip (python 3.8)
C:\Users\Betty>pip3 list
Package Version
---------------- ----------
appdirs 1.4.4
certifi 2020.12.5
chardet 4.0.0
distlib 0.3.1
filelock 3.0.12
idna 2.10
pip 21.0.1
pipenv 2020.11.15
requests 2.25.1
setuptools 41.2.0
six 1.15.0
urllib3 1.26.3
virtualenv 20.2.2
virtualenv-clone 0.5.4
wheel 0.34.2
C:\Users\Betty>
【问题讨论】:
-
你能检查一下你正在使用的 pip 版本吗?然后查看 pip3 list 的输出?
标签: python batch-file pip command-line-arguments