如何确保 python 个二进制文件在你的路径上?
How to ensure python binaries are on your path?
我正在尝试使用 Kaggle api。我已经使用 pip 下载了 kaggle 并将 kaggle.json 移动到 ~/.kaggle,但我无法在命令提示符下 运行 kaggle。它没有被识别。我怀疑这是因为我没有完成“确保 python 二进制文件在你的路径上”这一步骤,但老实说我不确定这意味着什么。这是我尝试下载数据集时的错误消息:
>>> sys.version
'3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)]'
>>> import kaggle
>>> kaggle datasets list -s demographics
File "<stdin>", line 1
kaggle datasets list -s demographics
^
SyntaxError: invalid syntax
kaggle
是 python 模块,但它还应该安装具有相同名称的脚本 kaggle
,您可以 运行 在 console
/terminal
/powershell
/cmd.exe
作为
kaggle datasets list -s demographics
但这不是您可以在 Python Shell 或 Python 脚本中 运行 的代码。
如果您找到此脚本 kaggle
并在编辑器中打开它,那么您可以看到它从 kaggle.cli
导入 main
并且它 运行s main()
这可以在自己的脚本中使用,如
import sys
from kaggle.cli import main
sys.argv += ['datasets', 'list', '-s', 'demographics']
main()
但此方法直接在 screen/console 上发送结果,它需要将自己的 class 分配给 sys.stdout
才能在变量中捕获此文本。
像这样:
import sys
import kaggle.cli
class Catcher():
def __init__(self):
self.text = ''
def write(self, text):
self.text += text
def close(self):
pass
catcher = Catcher()
old_stdout = sys.stdout # keep old stdout
sys.stdout = catcher # assing new class
sys.argv += ['datasets', 'list', '-s', 'demographics']
result = kaggle.cli.main()
sys.stdout = old_stdout # assign back old stdout (because it is needed to run correctly `print()`
print(catcher.text)
在脚本中挖掘源代码 kaggle
我知道你可以使用
做同样的事情
import kaggle.api
kaggle.api.dataset_list_cli(search='demographics')
但这也直接发送到 screen/console。
编辑:
您可以获得特殊对象列表的结果,稍后您可以使用 for
-loop
import kaggle.api
result = kaggle.api.dataset_list(search='demographics')
for item in result:
print('title:', item.title)
print('size:', item.size)
print('last updated:', item.lastUpdated)
print('download count:', item.downloadCount)
print('vote count:', item.voteCount)
print('usability rating:', item.usabilityRating)
print('---')
我正在尝试使用 Kaggle api。我已经使用 pip 下载了 kaggle 并将 kaggle.json 移动到 ~/.kaggle,但我无法在命令提示符下 运行 kaggle。它没有被识别。我怀疑这是因为我没有完成“确保 python 二进制文件在你的路径上”这一步骤,但老实说我不确定这意味着什么。这是我尝试下载数据集时的错误消息:
>>> sys.version
'3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)]'
>>> import kaggle
>>> kaggle datasets list -s demographics
File "<stdin>", line 1
kaggle datasets list -s demographics
^
SyntaxError: invalid syntax
kaggle
是 python 模块,但它还应该安装具有相同名称的脚本 kaggle
,您可以 运行 在 console
/terminal
/powershell
/cmd.exe
作为
kaggle datasets list -s demographics
但这不是您可以在 Python Shell 或 Python 脚本中 运行 的代码。
如果您找到此脚本 kaggle
并在编辑器中打开它,那么您可以看到它从 kaggle.cli
导入 main
并且它 运行s main()
这可以在自己的脚本中使用,如
import sys
from kaggle.cli import main
sys.argv += ['datasets', 'list', '-s', 'demographics']
main()
但此方法直接在 screen/console 上发送结果,它需要将自己的 class 分配给 sys.stdout
才能在变量中捕获此文本。
像这样:
import sys
import kaggle.cli
class Catcher():
def __init__(self):
self.text = ''
def write(self, text):
self.text += text
def close(self):
pass
catcher = Catcher()
old_stdout = sys.stdout # keep old stdout
sys.stdout = catcher # assing new class
sys.argv += ['datasets', 'list', '-s', 'demographics']
result = kaggle.cli.main()
sys.stdout = old_stdout # assign back old stdout (because it is needed to run correctly `print()`
print(catcher.text)
在脚本中挖掘源代码 kaggle
我知道你可以使用
import kaggle.api
kaggle.api.dataset_list_cli(search='demographics')
但这也直接发送到 screen/console。
编辑:
您可以获得特殊对象列表的结果,稍后您可以使用 for
-loop
import kaggle.api
result = kaggle.api.dataset_list(search='demographics')
for item in result:
print('title:', item.title)
print('size:', item.size)
print('last updated:', item.lastUpdated)
print('download count:', item.downloadCount)
print('vote count:', item.voteCount)
print('usability rating:', item.usabilityRating)
print('---')