[英]Issues with running Python script from command line using venv and pyenv
我创建了一个基本的 python 脚本,它调用了 API 等。 在目录中我还创建了一个虚拟环境:
python -m venv venv
我一直在运行脚本是 VS Code 没问题,并让它指向./venv/bin/python
。
我想设置它以便它使用 cron 作业重复。 但是,我尝试运行以下命令......
/Users/aaron/project/venv/bin/python /Users/aaron/project/extract_starling.py
...并收到此错误:
File "/Users/aaron/project/extract_starling.py", line 9, in <module>
account_id = config['starling_config']['account_id']
File "/Users/aaron/.pyenv/versions/miniforge3/lib/python3.9/configparser.py", line 963, in __getitem__
raise KeyError(key)
KeyError: 'starling_config'
应该注意,当我运行which python
而不是指向虚拟环境时,我得到这个......
/Users/aaron/.pyenv/versions/miniforge3/bin/python
我设置了pyenv
一段时间,虽然不知道为什么它说miniforge
。
无论如何,我想知道是否有人可以提供帮助,因为不太确定这里发生了什么。
编辑:
还应该注意我的脚本正在导入configparser
模块,如果相关的话,在同一目录中有一个config.conf
文件。 这是我脚本的第一部分:
import requests
import configparser
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# Config data for Starling
config = configparser.ConfigParser()
config.read('config.conf')
account_id = config['starling_config']['account_id']
Output 来自pyenv global
3.9.1
Output 来自python --version
3.9.7
Output 来自pyenv local
no local version configured
Output 来自pyenv versions
system
3.10.0
3.6.15
3.8.10
* 3.9.1 (set by /Users/aaron/.pyenv/version)
miniforge3
miniforge3/envs/tf
认为这是我自己的错。
在我的脚本中,我替换了
config.read('config.conf
)`
和
import os
cwd = os.path.dirname(os.path.abspath(__file__))
config.read(f'{cwd}/config.conf')
它奏效了。 基本上提供完整路径而不是相对路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.