繁体   English   中英

使用 venv 和 pyenv 从命令行运行 Python 脚本的问题

[英]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.

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