繁体   English   中英

从命令行运行 python 脚本有很多麻烦

[英]Lots of trouble running a python script from the command line

你如何回答的上下文:我是命令行环境的新手,除了基本的 git 命令。 我一直只使用像 PyCharm 或 NetBeans 这样的 IDE 来运行学校项目的东西。 请相应地框定您的答案。

我有一个非常小的 python 脚本,可以拉下一个 URL:

import sys
sys.path.append(r'C:\Users\WNeill\PycharmProjects\bloomskyGrantGrove\venv\Lib\site-packages\bloomsky_api')
import bloomsky_api as bs

client = bs.BloomSkyAPIClient(api_key='pr-XXXXXXXXXX')
data = client.get_data()[0] # Dictionary formatted like JSON, if you want data besides the latest image

with open("image_URL.txt", 'w') as file:
    print(data.get('outdoor').get('image_url'), file=file)

我做了sys.path.append()是因为我读到了一个不同的问题,它可以解决从命令行运行我的脚本时“找不到模块”的问题。

嗯,它确实,有点......现在,它找到了我的进口,但显然我的进口有进口......

$ py -m bloomtest.py Traceback (most recent call last): File "C:\\Program Files\\Python38\\lib\\runpy.py", line 183, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "C:\\Program Files\\Python38\\lib\\runpy.py", line 109, in _get_module_details __import__(pkg_name) File "C:\\Users\\WNeill\\PycharmProjects\\bloomskyGrantGrove\\bloomtest.py", line 4, in <module> import bloomsky_api as bs File "C:\\Users\\WNeill\\PycharmProjects\\bloomskyGrantGrove\\venv\\Lib\\site-packages\\bloomsky_api\\bloomsky_api.py", line 2, in <module> import requests ModuleNotFoundError: No module named 'requests'

那么当我的依赖项有依赖项时,我该怎么做才能使这项工作正常进行?

不要使用sys.path.append 想象一下,将您的代码发送给其他人,他们的包将不在同一路径中,他们将无法运行您的程序。 您可能不打算分发您的代码,但这只是不好的做法。

相反,您应该使用pip来安装您的软件包,因为我假设您一直在使用 PyCharm 软件包管理器。 我认为它会自动安装当前版本的 python(虽然不确定,我在 Linux 上)并且它是这样使用的:

pip install BloomSky-API

它会自动获取所有依赖项并将它们放在正确的位置。

我以前从未使用过py命令(我错过了吗?),请尝试使用python bloomtest.py来运行它,只是为了确定。 您可能会收到一条错误消息,告诉您python是一个无法识别的命令或文件,如果是这种情况,则意味着您的 PATH 设置不正确。 我发现解决此问题的最简单方法是简单地重新安装 python,确保选中将 python 添加到您的 PATH 的复选框。

如果我不确定它是否解决了您遇到的问题,我通常会在评论中发布这样的建议,但答案太长而无法放入评论。 希望这可以帮助!

我想发布我的问题的最终解决方案,由于DutChen18的回答,我偶然发现了这个问题。

他说我应该使用pip install来安装我所有的包,这是我已经在做的一件事。 我对命令行知之甚少,除了基本的 git 之类的。 再次尝试这样做给了我requirement already satisfied错误。

但是,我在 PyCharm 中使用了一个嵌入式终端: C:\\Program Files\\Git\\bin\\bash.exe ,它在您下载 Git 时出现。 这在 PyCharm 中非常有效,因为它会自动在项目的工作目录中启动。 对我这个新的命令行用户来说非常方便。

我决定与 PyCharm 分开打开 Git Bash 并再次运行pip install 我发现的第一件事是,它在没有python -m pip install情况下无法工作,这与 PyCharm 嵌入式终端不同。

一旦我想通了,我尝试python -m pip install BloomSky-API ,但这一次它没有告诉我这些库已经安装。 突然之间,我可以从命令行运行我的 python 脚本。

我对为什么会发生这种情况或为什么现在有效,我有零线索,而且我现在很想听到更技术性的解释,因为我已经有了工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM